In [ ]:
. ../../polyglot/scripts/nbs_header.ps1
. ../../polyglot/scripts/core.ps1
In [ ]:
{ pwsh build.ps1 } | Invoke-Block
polyglot/scripts/core.ps1/GetFullPath / Path: ../../deps/polyglot/lib/fsharp / Location: C:\home\git\spiral\apps\compiler / ResolvedLocation: C:\home\git\spiral\apps\compiler polyglot/scripts/core.ps1/GetFullPath / FullPath: C:\home\git\spiral\deps\polyglot\lib\fsharp 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "C:\home\git\spiral\apps\compiler/spiral_compiler.dib", "--working-directory", "C:\home\git\polyglot\lib\fsharp"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/spiral/apps/compiler/spiral_compiler.dib", "--output-path", "c:/home/git/spiral/apps/compiler/spiral_compiler.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/spiral/apps/compiler/spiral_compiler.dib" --output-path "c:/home/git/spiral/apps/compiler/spiral_compiler.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = Some( "C:\home\git\polyglot\lib\fsharp", ) } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # spiral_compiler (Polyglot) > > ── spiral ────────────────────────────────────────────────────────────────────── > open rust.rust_operators > open rust > open sm'_operators > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## spiral_compiler > > ── fsharp ────────────────────────────────────────────────────────────────────── > open FSharp.Core > > ── fsharp ────────────────────────────────────────────────────────────────────── > // #!import '../../../polyglot/deps/The-Spiral-Language/The Spiral Language > 2/Supervisor.fs' > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fsharpx.collections/3.1.0/lib/netstandard > 2.0/FSharpx.Collections.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > // #if !INTERACTIVE > // open Polyglot > open Common > // open Lib > // #endif > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## PersistentVector > > ── fsharp ────────────────────────────────────────────────────────────────────── > // #!import '../../../polyglot/deps/The-Spiral-Language/The Spiral Language > 2/PersistentVectorExtensions.fs' > > ── fsharp ────────────────────────────────────────────────────────────────────── > // #if !INTERACTIVE > // open Polyglot > // open Common > // open Lib > // #endif > // open System > // open FSharpx.Collections > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### private > > ── fsharp ────────────────────────────────────────────────────────────────────── > let range_checks from near_to vec = > if from <= near_to = false then > Common.trace Common.Critical (fun () -> > $"PersistentVectorExtensions.range_checks / `from` must be less or equal to > `near_to`. / from: {from} / near_to: {near_to} / vec: {vec}") Common._locals > // raise (System.ArgumentException("`from` must be less or equal to > `near_to`.")) > if from < 0 then raise (System.ArgumentException("`from` must not be > negative.")) > if FSharpx.Collections.PersistentVector.length vec < near_to then raise > (System.ArgumentException("`near_to` must not be beyond the length of the > vector.")) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### replace > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// O(n+m). Replace the specified range in a vector with the sequence. > let replace from near_to seq vec = > range_checks from near_to vec > let rec rest s = > if from < FSharpx.Collections.PersistentVector.length s then > FSharpx.Collections.PersistentVector.unconj s |> fst |> rest > else > Seq.fold (fun s x -> FSharpx.Collections.PersistentVector.conj x s) > s seq > let rec init s = > if near_to < FSharpx.Collections.PersistentVector.length s then > let s',x = FSharpx.Collections.PersistentVector.unconj s > FSharpx.Collections.PersistentVector.conj x (init s') > else > rest s > init vec > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### mapi > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// O(n). Returns a vector of the supplied length using the supplied function > operating on the index. > let mapi f vec = FSharpx.Collections.PersistentVector.init > (FSharpx.Collections.PersistentVector.length vec) (fun i -> f i vec.[[i]]) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### iter > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// O(n). Iterates over a vector using the supplied function operating on the > index. > let iter f vec = > let rec loop i = if i < FSharpx.Collections.PersistentVector.length vec then > f vec.[[i]] > loop 0 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### unzip > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// O(n). Unzips a vector of pairs into pairs of vectors. > let unzip vec = > let mutable a = FSharpx.Collections.PersistentVector.empty > let mutable b = FSharpx.Collections.PersistentVector.empty > iter (fun (a',b') -> a <- FSharpx.Collections.PersistentVector.conj a' a; b > <- FSharpx.Collections.PersistentVector.conj b' b) vec > a,b > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### concat > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// O(n). Concatenates a vector of vectors. > let concat vec = FSharpx.Collections.PersistentVector.fold > (FSharpx.Collections.PersistentVector.append) > FSharpx.Collections.PersistentVector.empty vec > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### rangePersistentVector > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// O(near_to-from). Get the vector at a range. > let rangePersistentVector from near_to vec = > range_checks from near_to vec > FSharpx.Collections.PersistentVector.init (near_to-from) (fun i -> > vec.[[i+from]]) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### tryFindBack > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// O(~n). Returns the last element for which a given function returns true. > None if such an element does not exist. > let tryFindBack f vec = > let rec loop i = > if 0 <= i then > let x = FSharpx.Collections.PersistentVector.nth i vec > if f x then Some x else loop (i-1) > else > None > loop (FSharpx.Collections.PersistentVector.length vec - 1) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## HashConsing > > ── fsharp ────────────────────────────────────────────────────────────────────── > // Adapted from: https://github.com/backtracking/ocaml-hashcons > // Type-Safe Modular Hash-Consing: > https://www.lri.fr/~filliatr/ftp/publis/hash-consing2.pdf > > // open System > open System.Runtime.InteropServices > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ConsedNode<'a> > > ── fsharp ────────────────────────────────────────────────────────────────────── > [[<CustomComparison;CustomEquality;StructuredFormatDisplay("{AsString}")>]] > type ConsedNode<'a> = > { > node: 'a > tag: int > hkey: int > } > > override x.ToString() = sprintf "<tag %i>" x.tag > member x.AsString = x.ToString() > override x.GetHashCode() = x.hkey > override x.Equals(y) = > match y with > | :? ConsedNode<'a> as y -> x.tag = y.tag > | _ -> false > > interface System.IComparable with > member x.CompareTo(y) = > match y with > | :? ConsedNode<'a> as y -> compare x.tag y.tag > | _ -> raise <| System.ArgumentException "Invalid comparison for > HashConsed." > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### HashConsTable > > ── fsharp ────────────────────────────────────────────────────────────────────── > type HashConsTable() = > let mutable table: ResizeArray<GCHandle> [[]] = Array.init 7 (fun _ -> > ResizeArray(0)) > let mutable total_size: int = 0 > let mutable limit: int = 3 > let mutable is_finalized: bool = false > let mutable counter: int = 0 > > member private t.Resize() = > let next_table_length x = x*3/2+3 > > let table_length' = next_table_length table.Length > if table_length' <= table.Length then failwith "The hash consing table > cannot be grown anymore." > let table' = Array.init table_length' (fun i -> ResizeArray()) > let limit' = limit+2 > let total_size' = > let mutable total_size=0 > for i=0 to table.Length-1 do > let table = table.[[i]] > for i=0 to table.Count-1 do > let x = table.[[i]] > total_size <- > match x.Target with > | null -> > x.Free() > total_size > | a -> > let bucket = table'.[[(hash a &&& > System.Int32.MaxValue) % table_length']] > bucket.Add x > total_size+1 > total_size > table <- table' > limit <- limit' > total_size <- total_size' > > member t.Add(x: 'a): ConsedNode<'a> = > let hkey = hash x > let table = table > let bucket = table.[[(hkey &&& System.Int32.MaxValue) % Array.length > table]] > let sz = bucket.Count > > let rec loop empty_pos i = > if i < sz then > match bucket.[[i]].Target with > | null -> loop i (i+1) > | :? ConsedNode<'a> as y when hkey = y.hkey && x = y.node -> y > | _ -> loop empty_pos (i+1) > else > let node = {node=x; hkey=hkey; tag=counter} > counter <- counter+1 > if empty_pos <> -1 then > let mutable m = bucket.[[empty_pos]] > m.Target <- node > else > bucket.Add (GCHandle.Alloc(node,GCHandleType.Weak)) > total_size <- total_size+1 > if total_size > limit * Array.length table then t.Resize() > node > > loop -1 0 // `-1` indicates the state of no empty bucket > > override __.Finalize() = > if is_finalized = false then > table |> (Array.iter << Seq.iter) (fun x -> x.Free()) > is_finalized <- true > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## Startup > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Argu > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PrimitiveType > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PrimitiveType = > | UInt8T | UInt16T | UInt32T | UInt64T > | Int8T | Int16T | Int32T | Int64T > | Float32T | Float64T > | BoolT | StringT | CharT > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### DefaultEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type DefaultEnv = { > port : int > default_int : PrimitiveType > default_uint : PrimitiveType > default_float : PrimitiveType > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### CliArguments > > ── fsharp ────────────────────────────────────────────────────────────────────── > type CliArguments = > | [[<Mandatory;Unique>]] Port of int > | [[<Unique>]] Default_Int of string > | [[<Unique>]] Default_Float of string > > interface IArgParserTemplate with > member s.Usage = > match s with > | Port _ -> "specify a primary port." > | Default_Int _ -> "specify the default int: i8, i16, i32, i64, u8, > u16, u32, u64" > | Default_Float _ -> "specify the default float: f32, f64" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### parseStartup > > ── fsharp ────────────────────────────────────────────────────────────────────── > let parseStartup args = > let parser = ArgumentParser.Create<CliArguments>(programName = "spiral.exe") > let results = parser.ParseCommandLine(args) > let int = > match results.GetResult(Default_Int,"i32") with > | "i8" -> Int8T > | "i16" -> Int16T > | "i32" -> Int32T > | "i64" -> Int64T > | "u8" -> UInt8T > | "u16" -> UInt16T > | "u32" -> UInt32T > | "u64" -> UInt64T > | x -> failwith $"Invalid default int.\nGot: %s{x}\nExpected one of: i8, > i16, i32, i64, u8, u16, u32, u64" > > let uint = > match int with > | Int8T -> UInt8T > | Int16T -> UInt16T > | Int32T -> UInt32T > | Int64T -> UInt64T > | x -> x // If the int is unsigned then make them the same type. > { > port = results.GetResult(Port) > default_int = int > default_uint = uint > default_float = > match results.GetResult(Default_Float,"f64") with > | "f32" -> Float32T > | "f64" -> Float64T > | x -> failwith $"Invalid default float.\nGot: %s{x}\nExpected one of: > f32, f64" > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## Utils > > ── fsharp ────────────────────────────────────────────────────────────────────── > open System.Collections.Generic > open System.Runtime.CompilerServices > // open Common > #if !INTERACTIVE > open Lib > #endif > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### list_try_zip > > ── fsharp ────────────────────────────────────────────────────────────────────── > let list_try_zip a b = > try Some (List.zip a b) with _ -> None > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### get_default > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline get_default (memo_dict: Dictionary<_,_>) k def = > match memo_dict.TryGetValue k with > | true, v -> v > | false, _ -> def() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### memoize' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline memoize' (memo_dict: ConditionalWeakTable<_,_>) f k = > match memo_dict.TryGetValue k with > | true, v -> v > | false, _ -> let v = f k in memo_dict.Add(k,v); v > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### memoize > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline memoize (memo_dict: Dictionary<_,_>) f k = > match memo_dict.TryGetValue k with > | true, v -> v > | false, _ -> let v = f k in memo_dict.Add(k,v); v > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### lines > > ── fsharp ────────────────────────────────────────────────────────────────────── > let lines (str : string) = > str.Split([[|"\r\n";"\r";"\n"|]],System.StringSplitOptions.None) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### remove > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline remove (dict : Dictionary<_,_>) x on_succ on_fail = > let mutable q = Unchecked.defaultof<_> > if dict.Remove(x, &q) then on_succ q else on_fail () > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### file_uri > > ── fsharp ────────────────────────────────────────────────────────────────────── > let file_uri (x : string) = > let result = x |> SpiralFileSystem.standardize_path |> > SpiralFileSystem.new_file_uri > trace Verbose (fun () -> $"Utils.file_uri / x: {x} / result: {result}") > _locals > result > > ── fsharp ────────────────────────────────────────────────────────────────────── > //open Hopac > //open Hopac.Infixes > //open Hopac.Extensions > //open Hopac.Stream > > //let print_ch = Ch<string>() > //let pr x = Hopac.run (Ch.send print_ch (x.ToString())) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## ParserCombinators > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### index > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline index d = (^a : (member Index: ^b) d) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### index_set > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline index_set i d = > (^a : (member set_Index: ^b -> unit) (d,i)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### (.>>.) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (.>>.) a b d = > match a d with > | Ok a -> > match b d with > | Ok b -> Ok (a,b) > | Error x -> Error x > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### tuple3 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline tuple3 a b c d = > match a d with > | Ok a -> > match b d with > | Ok b -> > match c d with > | Ok c -> Ok (a, b, c) > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### tuple4 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline tuple4 a b c d' d = > match a d with > | Ok a -> > match b d with > | Ok b -> > match c d with > | Ok c -> > match d' d with > | Ok d' -> Ok (a, b, c, d') > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### tuple5 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline tuple5 a b c d' e d = > match a d with > | Ok a -> > match b d with > | Ok b -> > match c d with > | Ok c -> > match d' d with > | Ok d' -> > match e d with > | Ok e -> Ok (a, b, c, d', e) > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### tuple6 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline tuple6 a b c d' e f d = > match a d with > | Ok a -> > match b d with > | Ok b -> > match c d with > | Ok c -> > match d' d with > | Ok d' -> > match e d with > | Ok e -> > match f d with > | Ok f -> Ok (a, b, c, d', e, f) > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### tuple7 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline tuple7 a b c d' e f g d = > match a d with > | Ok a -> > match b d with > | Ok b -> > match c d with > | Ok c -> > match d' d with > | Ok d' -> > match e d with > | Ok e -> > match f d with > | Ok f -> > match g d with > | Ok g -> Ok (a, b, c, d', e, f, g) > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### pipe2 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline pipe2 a b f d = > match a d with > | Ok a -> > match b d with > | Ok b -> Ok (f a b) > | Error x -> Error x > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### pipe3 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline pipe3 a b c f d = > match a d with > | Ok a -> > match b d with > | Ok b -> > match c d with > | Ok c -> Ok (f a b c) > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### pipe4 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline pipe4 a b c d' f d = > match a d with > | Ok a -> > match b d with > | Ok b -> > match c d with > | Ok c -> > match d' d with > | Ok d' -> Ok (f a b c d') > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### pipe5 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline pipe5 a b c d' e f d = > match a d with > | Ok a -> > match b d with > | Ok b -> > match c d with > | Ok c -> > match d' d with > | Ok d' -> > match e d with > | Ok e -> Ok (f a b c d' e) > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### (.>>) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (.>>) a b d = > match a d with > | Ok a -> > match b d with > | Ok b -> Ok a > | Error x -> Error x > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### (>>.) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (>>.) a b d = > match a d with > | Ok a -> > match b d with > | Ok b -> Ok b > | Error x -> Error x > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### opt > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline opt a d = > let s = index d > match a d with > | Ok a -> Ok(Some a) > | Error x -> > if s = index d then Ok(None) > else Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### optional > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline optional a d = > let s = index d > match a d with > | Ok a -> Ok() > | Error x -> > if s = index d then Ok() > else Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### (|>>) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (|>>) a b d = > match a d with > | Ok a -> Ok(b a) > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### (>>%) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (>>%) a b d = > match a d with > | Ok a -> Ok(b) > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### (>>=) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (>>=) a b d = > match a d with > | Ok a -> b a d > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### (>>=?) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (>>=?) a b d = > let i = index d > match a d with > | Ok a -> > let i' = index d > match b a d with > | Ok _ as x -> x > | Error _ as x -> (if i' = index d then index_set i d); x // Backtracks > to the beginning if the parser state has not changed. > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### many_iter > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline many_iter f a d = > let rec loop () = > let s = index d > match a d with > | Ok _ when s = index d -> failwith "The parser succeeded without > changing the parser index in `many`. Had an exception not been raised the parser > would have diverged." > | Ok x -> f x; loop() > | Error er -> if s = index d then Ok() else Error er > loop () > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### many_resize_array > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline many_resize_array a d = > let ar = ResizeArray() > match many_iter ar.Add a d with > | Ok() -> Ok(ar) > | Error er -> Error er > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### many_array > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline many_array a d = > many_resize_array a d |> Result.map (fun x -> x.ToArray()) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### many > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline many a d = > many_resize_array a d |> Result.map Seq.toList > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### sepBy > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline sepBy a b d = > let s = index d > match a d with > | Ok a' -> (many (b >>. a) |>> fun b -> a' :: b) d > | Error x -> if s = index d then Ok [[]] else Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### sepBy1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline sepBy1 a b d = > match a d with > | Ok a' -> (many (b >>. a) |>> fun b -> a' :: b) d > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### many1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline many1 a d = > match a d with > | Ok a' -> (many a |>> fun b -> a' :: b) d > | Error x -> Error x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### attempt > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline attempt a d = > let s = index d > match a d with > | Ok x -> Ok x > | Error a as a' -> index_set s d; a' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### restore > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// Restores the index on an error if at least i tokens have been consumed. > let inline restore i a d = > let s = index d > match a d with > | Ok x -> Ok x > | Error _ as er -> (if index d <= s + i then index_set s d); er > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### alt > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline alt s a b d = > match a d with > | Ok x -> Ok x > | Error a as a' -> > if s = index d then > match b d with > | Ok x -> Ok x > | Error b -> if s = index d then Error(List.append a b) else Error b > else > a' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### (<|>) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (<|>) a b d = let s = index d in alt s a b d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### (<|>%) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (<|>%) a b d = > let s = index d > match a d with > | Ok x -> Ok x > | Error _ as a' -> if s = index d then Ok b else a' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### choice > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline choice ar d = > let s = index d > let rec loop i = > if i < Array.length ar then > match ar.[[i]] d with > | Ok x -> Ok x > | Error a as a' -> > if s = index d then > match loop (i+1) with > | Ok x -> Ok x > | Error b -> Error(List.append a b) > else > a' > else > Error [[]] > loop 0 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### between > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline between a b c = a >>. c .>> b > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## LineParsers > > ── fsharp ────────────────────────────────────────────────────────────────────── > // open System > // open System.Text > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TokenizerRange > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TokenizerRange = {from : int; nearTo : int} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TokenizerError > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TokenizerError = string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Tokenizer > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Tokenizer = { > text : string // A single line. > mutable from : int > } with > > member t.Index with get() = t.from and set i = t.from <- i > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### range_char > > ── fsharp ────────────────────────────────────────────────────────────────────── > let range_char i = {from=i; nearTo=i+1} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### error_char > > ── fsharp ────────────────────────────────────────────────────────────────────── > let error_char i er = Result.Error [[range_char i, er]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### inc' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inc' i (s : Tokenizer) = s.from <- s.from+i > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### inc > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inc (s : Tokenizer) = inc' 1 s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### eolLineParsers > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// End Of Line character > let eolLineParsers = System.Char.MaxValue > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### peek' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let peek' (s : Tokenizer) i = > let i = s.from + i > if 0 <= i && i < s.text.Length then s.text.[[i]] > else eolLineParsers > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### peek > > ── fsharp ────────────────────────────────────────────────────────────────────── > let peek (s : Tokenizer) = peek' s 0 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### many1Satisfy2L > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline many1Satisfy2L init body label (s : Tokenizer) = > let x = peek s > if init x && x <> eolLineParsers then > inc s > let rec loop (b : System.Text.StringBuilder) = > let x = peek s > if body x && x <> eolLineParsers then inc s; b.Append(x) |> loop > else b.ToString() > Result.Ok(loop (System.Text.StringBuilder().Append(x))) > else > let i = s.from > error_char i label > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### many1SatisfyL > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline many1SatisfyL body label (s : Tokenizer) = > many1Satisfy2L body body label s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline skip c (s : Tokenizer) = > let b = peek s = c in (if b then inc s); b > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### spaces' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec spaces' (s : Tokenizer) = > if peek s = ' ' then inc s; spaces' s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### spaces > > ── fsharp ────────────────────────────────────────────────────────────────────── > let spaces s = > spaces' s |> Result.Ok > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### spaces1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let spaces1 (s : Tokenizer) = > if peek s = ' ' then inc s; spaces s else error_char s.from "space" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip_char > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip_char c (s : Tokenizer) = > let from = s.from > if skip c s then Ok() else error_char from (sprintf "'%c'" c) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip_string > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip_string x (s : Tokenizer) = > if System.String.Compare(s.text,s.from,x,0,x.Length) = 0 then inc' x.Length > s; Ok() > else error_char s.from x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### anyOf > > ── fsharp ────────────────────────────────────────────────────────────────────── > let anyOf (l : char list) (s : Tokenizer) = > let c = peek s > if Seq.contains c l then > inc s; Result.Ok(c) > else > let i = s.from > Error (List.map (fun c -> range_char i, string c) l) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### chars_till_string > > ── fsharp ────────────────────────────────────────────────────────────────────── > let chars_till_string close (s : Tokenizer) = > assert (close <> "") > let rec loop (b : System.Text.StringBuilder) = > let x = peek s > if x = close.[[0]] && > System.String.Compare(s.text,s.from,close,1,close.Length-1) = 0 then inc' > close.Length s; Ok(b.ToString()) > else > if x <> eolLineParsers then inc s; b.Append(x) |> loop > else error_char s.from close > loop(System.Text.StringBuilder()) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### numberLineParsers > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// Parses a number as a sequence of digits and optionally underscores. Filters > out the underscores from the result. > let numberLineParsers (s : Tokenizer) = > let x = peek s > if System.Char.IsDigit x then > inc s > let rec loop (b : System.Text.StringBuilder) = > let x = peek s > if x = '_' then inc s; loop b > elif System.Char.IsDigit x then inc s; loop(b.Append(x)) > else Ok(b.ToString()) > loop (System.Text.StringBuilder().Append(x)) > else > let i = s.from > error_char i "number" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### number_fractional > > ── fsharp ────────────────────────────────────────────────────────────────────── > let number_fractional s = > (numberLineParsers .>>. (opt (skip_char '.' >>. numberLineParsers))) s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## VSCTypes > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### VSCPos > > ── fsharp ────────────────────────────────────────────────────────────────────── > type VSCPos = {|line : int; character : int|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### VSCRange > > ── fsharp ────────────────────────────────────────────────────────────────────── > type VSCRange = VSCPos * VSCPos > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### RString > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RString = VSCRange * string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PackageId > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PackageId = int > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ModuleId > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ModuleId = int > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### DirId > > ── fsharp ────────────────────────────────────────────────────────────────────── > type DirId = int > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### GlobalId > > ── fsharp ────────────────────────────────────────────────────────────────────── > type GlobalId = { package_id : PackageId; module_id : ModuleId; tag : int } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### RGlobalId > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RGlobalId = VSCRange * GlobalId > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SpiEdit > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SpiEdit = {|from: int; nearTo: int; lines: string [[]]|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## Tokenize > > ── fsharp ────────────────────────────────────────────────────────────────────── > // open System > // open System.Text > // open FSharpx.Collections > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TokenKeyword > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TokenKeyword = > | SpecIn > | SpecAnd > | SpecFun > | SpecMatch > | SpecTypecase > | SpecFunction > | SpecWith > | SpecWithout > | SpecAs > | SpecWhen > | SpecInl > | SpecForall > | SpecExists > | SpecLet > | SpecInm > | SpecInb > | SpecRec > | SpecIf > | SpecThen > | SpecElif > | SpecElse > | SpecJoin > | SpecJoinBackend > | SpecType > | SpecNominal > | SpecReal > | SpecUnion > | SpecOpen > | SpecWildcard > | SpecPrototype > | SpecInstance > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ParenthesisState > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ParenthesisState = Open | Close > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Parenthesis > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Parenthesis = Round | Square | Curly > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### MacroEnum > > ── fsharp ────────────────────────────────────────────────────────────────────── > type MacroEnum = MTerm | MType | MTypeLit > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Literal > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Literal = > | LitUInt8 of uint8 > | LitUInt16 of uint16 > | LitUInt32 of uint32 > | LitUInt64 of uint64 > | LitInt8 of int8 > | LitInt16 of int16 > | LitInt32 of int32 > | LitInt64 of int64 > | LitFloat32 of float32 > | LitFloat64 of float > | LitBool of bool > | LitString of string > | LitChar of char > > // Converts the literal back to their string representation. Doesn't > override the default printer. > member l.LitToString() = > match l with > | LitUInt8 x -> x.ToString("R") > | LitUInt16 x -> x.ToString("R") > | LitUInt32 x -> x.ToString("R") > | LitUInt64 x -> x.ToString("R") > | LitInt8 x -> x.ToString("R") > | LitInt16 x -> x.ToString("R") > | LitInt32 x -> x.ToString("R") > | LitInt64 x -> x.ToString("R") > | LitFloat32 x -> x.ToString("R") > | LitFloat64 x -> x.ToString("R") > | LitBool x -> x.ToString() > | LitString x -> x > | LitChar x -> x.ToString() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SemanticTokenLegend > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SemanticTokenLegend = > | variable = 0 > | symbol = 1 > | string = 2 > | number = 3 > | operator = 4 > | unary_operator = 5 > | comment = 6 > | keyword = 7 > | parenthesis = 8 > | type_variable = 9 > | escaped_char = 10 > | unescaped_char = 11 > | number_suffix = 12 > | escaped_var = 13 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SpiralToken > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SpiralToken = > | TokVar of string * SemanticTokenLegend > | TokSymbol of string * SemanticTokenLegend > | TokOperator of string * SemanticTokenLegend > | TokUnaryOperator of string * SemanticTokenLegend > | TokValue of Literal > | TokValueSuffix > | TokDefaultValue of string > | TokComment of string > | TokKeyword of TokenKeyword > | TokParenthesis of Parenthesis * ParenthesisState > | TokStringOpen | TokStringClose > | TokText of string > | TokEscapedChar of char > | TokEscapedVar > | TokUnescapedChar of char > | TokMacroOpen | TokMacroClose > | TokMacroTermVar of string > | TokMacroTypeVar of string > | TokMacroTypeLitVar of string > | TokMacroExpression of MacroEnum * ParenthesisState > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### token_groups > > ── fsharp ────────────────────────────────────────────────────────────────────── > let token_groups = function > | TokUnaryOperator(_,r) | TokOperator(_,r) | TokVar(_,r) | TokSymbol(_,r) -> > r > | TokValue (LitChar _) | TokStringOpen | TokStringClose | TokText _ | > TokMacroOpen | TokMacroClose | TokValue(LitString _) -> > SemanticTokenLegend.string > | TokComment _ -> SemanticTokenLegend.comment > | TokKeyword _ -> SemanticTokenLegend.keyword > | TokParenthesis _ -> SemanticTokenLegend.parenthesis > | TokMacroTypeVar _ -> SemanticTokenLegend.type_variable > | TokMacroTypeLitVar _ -> SemanticTokenLegend.type_variable > | TokMacroTermVar _ -> SemanticTokenLegend.variable > | TokMacroExpression _ -> SemanticTokenLegend.parenthesis > | TokEscapedChar _ -> SemanticTokenLegend.escaped_char > | TokEscapedVar -> SemanticTokenLegend.escaped_var > | TokUnescapedChar _ -> SemanticTokenLegend.unescaped_char > | TokValue _ | TokDefaultValue _ -> SemanticTokenLegend.number > | TokValueSuffix -> SemanticTokenLegend.number_suffix > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_lit > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_lit = function > | LitUInt8 x -> sprintf "%iu8" x > | LitUInt16 x -> sprintf "%iu16" x > | LitUInt32 x -> sprintf "%iu32" x > | LitUInt64 x -> sprintf "%iu64" x > | LitInt8 x -> sprintf "%ii8" x > | LitInt16 x -> sprintf "%ii16" x > | LitInt32 x -> sprintf "%ii32" x > | LitInt64 x -> sprintf "%ii64" x > | LitFloat32 x -> sprintf "%ff32" x > | LitFloat64 x -> sprintf "%ff64" x > | LitBool x -> sprintf "%b" x > | LitString x -> sprintf "%s" x > | LitChar x -> sprintf "%c" x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_small_var_char_starting > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_small_var_char_starting c = System.Char.IsLower c || c = '_' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_var_char > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_var_char c = System.Char.IsLetterOrDigit c || c = '_' || c = ''' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_big_var_char_starting > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_big_var_char_starting c = System.Char.IsUpper c > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_parenth_open > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_var_char_starting c = System.Char.IsLetter c || c = '_' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_parenth_open > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_parenth_open c = > let f x = c = x > f '(' || f '[[' || f '{' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_parenth_close > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_parenth_close c = > let f x = c = x > f ')' || f ']]' || f '}' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_operator_char > > ── fsharp ────────────────────────────────────────────────────────────────────── > // http://www.asciitable.com/ > let is_operator_char c = > let f x = c = x > '!' <= c && c <= '~' && (is_var_char c || f '"' || is_parenth_open c || > is_parenth_close c) = false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_prefix_separator_char > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_prefix_separator_char c = > let f x = c = x > f ' ' || f eolLineParsers || is_parenth_open c > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_postfix_separator_char > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_postfix_separator_char c = > let f x = c = x > f ' ' || f eolLineParsers || is_parenth_close c > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_separator_char > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_separator_char c = is_prefix_separator_char c || is_parenth_close c > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let var (s: Tokenizer) = > let from = s.from > let ok x = Result.Ok ({from=from; nearTo=s.from}, x) > let body x _ = > if skip ':' s then error_char from ": is not allowed directly after a > var." > else > let f x = TokKeyword(x) > match x with > | "in" -> f SpecIn > | "and" -> f SpecAnd | "fun" -> f SpecFun > | "match" -> f SpecMatch | "typecase" -> f SpecTypecase > | "function" -> f SpecFunction > | "with" -> f SpecWith | "without" -> f SpecWithout > | "as" -> f SpecAs | "when" -> f SpecWhen > | "inl" -> f SpecInl | "forall" -> f SpecForall > | "let" -> f SpecLet | "inm" -> f SpecInm > | "inb" -> f SpecInb | "rec" -> f SpecRec > | "if" -> f SpecIf | "then" -> f SpecThen > | "elif" -> f SpecElif | "else" -> f SpecElse > | "join" -> f SpecJoin | "join_backend" -> f SpecJoinBackend > | "type" -> f SpecType | "nominal" -> f SpecNominal > | "real" -> f SpecReal | "union" -> f SpecUnion > | "open" -> f SpecOpen | "_" -> f SpecWildcard > | "prototype" -> f SpecPrototype | "instance" -> f SpecInstance > | "true" -> TokValue(LitBool true) | "false" -> TokValue(LitBool > false) > | "exists" -> f SpecExists > | x -> TokVar(x,SemanticTokenLegend.variable) > |> ok > > (many1Satisfy2L is_var_char_starting is_var_char "variable" >>= body .>> > spaces) s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### numberTokenize > > ── fsharp ────────────────────────────────────────────────────────────────────── > let numberTokenize (s: Tokenizer) = > let from = s.from > > let parser (s: Tokenizer) = > if peek s = '-' && System.Char.IsDigit (peek' s 1) && > is_prefix_separator_char (peek' s -1) then > inc s > number_fractional s |> Result.map (function > | (a,Some b) -> sprintf "-%s.%s" a b > | (a,None) -> "-"+a) > else number_fractional s |> Result.map (function > | (a,Some b) -> sprintf "%s.%s" a b > | (a,None) -> a) > > let followedBySuffix x (s: Tokenizer) = > let from' = s.from > let inline safe_parse string_to_val val_to_lit val_dsc = > if (let x = peek s in is_separator_char x || is_operator_char x) > then > match string_to_val x with > | true, x -> Ok [[{from=from; nearTo=from'}, TokValue(val_to_lit > x); {from=from'; nearTo=s.from}, TokValueSuffix]] > | false, _ -> Error [[{from=from; nearTo=s.from}, (sprintf "The > string %s cannot be safely parsed as %s." x val_dsc)]] > else error_char s.from "separator" > let skip c = skip c s > if skip 'i' then > if skip '8' then safe_parse System.SByte.TryParse LitInt8 "i8" > elif skip '1' && skip '6' then safe_parse System.Int16.TryParse > LitInt16 "i16" > elif skip '3' && skip '2' then safe_parse System.Int32.TryParse > LitInt32 "i32" > elif skip '6' && skip '4' then safe_parse System.Int64.TryParse > LitInt64 "i64" > else error_char s.from "8,16,32 or 64" > elif skip 'u' then > if skip '8' then safe_parse System.Byte.TryParse LitUInt8 "uint8" > elif skip '1' && skip '6' then safe_parse System.UInt16.TryParse > LitUInt16 "u16" > elif skip '3' && skip '2' then safe_parse System.UInt32.TryParse > LitUInt32 "u32" > elif skip '6' && skip '4' then safe_parse System.UInt64.TryParse > LitUInt64 "u64" > else error_char s.from "8,16,32 or 64" > elif skip 'f' then > if skip '3' && skip '2' then safe_parse System.Single.TryParse > LitFloat32 "f32" > elif skip '6' && skip '4' then safe_parse System.Double.TryParse > LitFloat64 "f64" > else error_char s.from "32 or 64" > else Ok [[{from=from; nearTo=s.from}, TokDefaultValue x]] > > (parser >>= followedBySuffix .>> spaces) s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### symbol > > ── fsharp ────────────────────────────────────────────────────────────────────── > let symbol s = > let from = s.from > let f x = ({from=from; nearTo=s.from}, x) > > let symbol x = TokSymbol(x,SemanticTokenLegend.symbol) > let x = peek s > let x' = peek' s 1 > if x = '.' && x' = '(' then inc' 2 s; ((many1SatisfyL is_operator_char > "operator") .>> skip_char ')' |>> (symbol >> f) .>> spaces) s > elif x = '.' && is_var_char_starting x' then inc s; ((many1SatisfyL > is_var_char "variable") |>> (symbol >> f) .>> spaces) s > else error_char from "symbol" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### comment > > ── fsharp ────────────────────────────────────────────────────────────────────── > let comment (s : Tokenizer) = > if peek s = '/' && peek' s 1 = '/' then > let from = s.from > inc' 2 s > while peek s = '/' || (peek s = '!' && peek' s 1 = ' ') do > inc s > if skip ' ' s then > let com = s.text.[[s.from..]] > s.from <- s.text.Length > Ok ({from=from; nearTo=s.from}, TokComment com) > else error_char s.from "whitespace" > else > error_char s.from "comment" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### operator > > ── fsharp ────────────────────────────────────────────────────────────────────── > let operator (s : Tokenizer) = > let from = s.from > let ok x = ({from=from; nearTo=s.from}, x) |> Ok > let is_separator_prev = is_prefix_separator_char (peek' s -1) > let f name (s: Tokenizer) = > if is_separator_prev && (is_postfix_separator_char (peek s) = false) > then TokUnaryOperator(name,SemanticTokenLegend.unary_operator) |> ok > else TokOperator(name,SemanticTokenLegend.operator) |> ok > (many1SatisfyL is_operator_char "operator" >>= f .>> spaces) s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### string_raw > > ── fsharp ────────────────────────────────────────────────────────────────────── > let string_raw s = > let from = s.from > let f x = {from=from; nearTo=s.from}, TokValue(LitString x) > (skip_string "@\"" >>. chars_till_string "\"" |>> f .>> spaces) s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### char_quoted > > ── fsharp ────────────────────────────────────────────────────────────────────── > let char_quoted s = > let char_quoted_body (s: Tokenizer) = > let inline read on_succ = > let x = peek s > if x <> eolLineParsers then inc s; on_succ x > else error_char s.from "character or '" > read (function > | '\\' -> > read (Ok << function > | 'n' -> '\n' | 'r' -> '\r' | 't' -> '\t' | 'b' -> '\b' > | x -> x > ) > | x -> Ok x > ) > let from = s.from > let f _ x _ = {from=from; nearTo=s.from}, TokValue(LitChar x) > (pipe3 (skip_char '\'') char_quoted_body (skip_char '\'') f .>> spaces) s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### special_char > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline special_char l text s = > let inline f from x = {from=from; nearTo=s.from}, x > let f = f s.from > inc s > let esc x = inc s; text (f (TokEscapedChar x) :: l) > let unesc x = inc s; text (f (TokUnescapedChar x) :: l) > match peek s with > | x when x = eolLineParsers -> error_char s.from "character" > | 'n' -> esc '\n' | 'r' -> esc '\r' | 't' -> esc '\t' | 'b' -> esc '\b' > | x -> unesc x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### string_quoted' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let string_quoted' s = > let inline f from x = {from=from; nearTo=s.from}, x > let close l = let f = f s.from in inc s; List.rev (f TokStringClose :: l) |> > Ok > let rec text l = > let f = f s.from > let rec loop (str : System.Text.StringBuilder) = > let l () = if 0 < str.Length then f (TokText(str.ToString())) :: l > else l > match peek s with > | x when x = eolLineParsers -> error_char s.from "character or \"" > | '\\' -> special_char (l ()) text s > | '"' -> close (l ()) > | x -> inc s; loop (str.Append(x)) > loop (System.Text.StringBuilder()) > > match peek s with > | '"' -> let f = f s.from in inc s; text [[f TokStringOpen]] > | _ -> error_char s.from "\"" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### string_quoted > > ── fsharp ────────────────────────────────────────────────────────────────────── > let string_quoted s = (string_quoted' .>> spaces) s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TokenizerMacro > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TokenizerMacro = > | Text of TokenizerRange * string > | EscapedChar of TokenizerRange * char > | EscapedVar of TokenizerRange > | UnescapedChar of TokenizerRange * char > | Expression of TokenizerRange * string * MacroEnum > | Var of TokenizerRange * string * MacroEnum > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### range > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline range p s = > let from = s.from > match p s with > | Ok x -> Ok({from=from; nearTo=s.from}, x) > | Error l -> Error l > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### brackets > > ── fsharp ────────────────────────────────────────────────────────────────────── > let brackets s = > let from = s.from > let f spec = inc s; (spaces >>% ({from=from; nearTo=s.from}, > TokParenthesis(spec))) s > match peek s with > | '(' -> f (Round,Open) | '[[' -> f (Square,Open) | '{' -> f (Curly,Open) > | ')' -> f (Round,Close) | ']]' -> f (Square,Close) | '}' -> f (Curly,Close) > | _ -> error_char s.from "`(`,`[[`,`{`,`}`,`]]` or `)`" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### tab > > ── fsharp ────────────────────────────────────────────────────────────────────── > let tab s = if peek s = '\t' then Error [[range_char (index s), "Tabs are not > allowed."]] else Error [[]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### eolTokenize > > ── fsharp ────────────────────────────────────────────────────────────────────── > let eolTokenize s = if peek s = eolLineParsers then Ok [[]] else Error > [[range_char (index s), "end of line"]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### token > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec token s = > let i = s.from > let inline (+) a b = alt i a b > let individual_tokens = string_quoted + numberTokenize + ((var + symbol + > string_raw + char_quoted + brackets + comment + operator) |>> fun x -> [[x]]) > |>> fun x -> x, [[]] > (macro + individual_tokens) s > and tokenize text = > let mutable ar = FSharpx.Collections.PersistentVector.empty > let mutable er = [[]] > let tokens = > many_iter (fun (x : (TokenizerRange * SpiralToken) list,er' : > (TokenizerRange * string) list) -> > List.iter (fun x -> ar <- FSharpx.Collections.PersistentVector.conj > x ar) x > er <- List.append er' er > ) token > let er = match (spaces >>. tokens .>> (eolTokenize <|> tab)) {from=0; > text=text} with Ok() -> er | Error er' -> List.append er' er > ar, er > and macro s = > let char_to_macro_expr = function > | '`' -> MType > | '!' -> MTerm > | '@' -> MTypeLit > | _ -> failwith "Compiler error: Unknown char in the tokenizer." > > let p_special_char s = > match peek' s 0, peek' s 1 with > | '\\', ('n' | 'r' | 't' | 'b' as c) -> > let r = {from=s.from; nearTo=s.from+2} > inc' 2 s > Ok(EscapedChar(r, c)) > | '\\', ('v' as c) -> > let r = {from=s.from; nearTo=s.from+2} > inc' 2 s > Ok(EscapedVar(r)) > | '\\', c -> > let r = {from=s.from; nearTo=s.from+2} > inc' 2 s > Ok(UnescapedChar(r, c)) > | _ -> error_char s.from "\\" > > let p_var s = (many1Satisfy2L is_var_char_starting is_var_char "variable") s > let p_text closing_char s = (range (many1SatisfyL (fun c -> c <> > closing_char && c <> '`' && c <> '!' && c <> '@' && c <> '\\') "macro text") |>> > Text) s > let p_expr s = > let start = anyOf [['`'; '!'; '@']] > let case_paren start_char = > let mutable c = 1 // number of open parens. > between (skip_char '(') (skip_char ')') (many1SatisfyL (fun x -> // > Stops when the number of open parens is 0. > c <- c + (match x with '(' -> 1 | ')' -> -1 | _ -> 0) > c > 0 > ) "not )") > |>> fun (body) range -> Expression(range,body,char_to_macro_expr > start_char) > let case_var start_char = > (skip_char start_char |>> fun () range -> > UnescapedChar(range,start_char)) > <|> (p_var |>> fun body range -> Var(range,body,char_to_macro_expr > start_char)) > (range (start >>= fun start_char -> (case_paren start_char <|> case_var > start_char)) > |>> fun (range, f) -> f range) s > let p_macro_inner closing_char s = (many (p_special_char <|> p_text > closing_char <|> p_expr) <|>% [[]]) s > let p_macro s = > let body a b = range (between (skip_string a) (skip_char b) > (p_macro_inner b)) > (body "$\"" '"' <|> body "$'" ''') s > > match (p_macro .>> spaces) s with > | Ok(r, x) -> > let start = > let r = {from=r.from; nearTo=r.from+2} > r, TokMacroOpen > let end_ = > let r = {from=r.nearTo-1; nearTo=r.nearTo} > r, TokMacroClose > > let mutable er = [[]] > x |> List.collect (function > | Text(r,x) -> [[r, TokText x]] > | EscapedChar(r,x) -> > let x = match x with 'n' -> '\n' | 'r' -> '\r' | 't' -> '\t' | > 'b' -> '\b' | x -> x > [[r, TokEscapedChar x]] > | EscapedVar(r) -> [[r, TokEscapedVar]] > | UnescapedChar(r,x) -> [[r, TokUnescapedChar x]] > | Var(r,x,MType) -> [[r, TokMacroTypeVar x]] > | Var(r,x,MTypeLit) -> [[r, TokMacroTypeLitVar x]] > | Var(r,x,MTerm) -> [[r, TokMacroTermVar x]] > | Expression(r,x,t) -> > let start = > let r = {from=r.from; nearTo=r.from+2} > r, TokMacroExpression(t,Open) > let end_ = > let r = {from=r.nearTo-1; nearTo=r.nearTo} > r, TokMacroExpression(t,Close) > let middle,er' = > let adjust_range (r : TokenizerRange,x) = {from=r.from + > (fst start).nearTo; nearTo=r.nearTo + (fst start).nearTo}, x > let middle,er' = tokenize x > FSharpx.Collections.PersistentVector.map adjust_range > middle, > List.map adjust_range er' > er <- List.append er' er > List.concat [[[[start]]; List.ofSeq middle; [[end_]]]] > ) > |> fun l -> Ok(List.concat [[[[start]]; l; [[end_]]]], er) > | Error er -> Error er > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### LineToken > > ── fsharp ────────────────────────────────────────────────────────────────────── > type LineToken = TokenizerRange * SpiralToken > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### LineComment > > ── fsharp ────────────────────────────────────────────────────────────────────── > type LineComment = TokenizerRange * string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### LineTokenErrors > > ── fsharp ────────────────────────────────────────────────────────────────────── > type LineTokenErrors = (TokenizerRange * TokenizerError) list > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### vscode_tokens > > ── fsharp ────────────────────────────────────────────────────────────────────── > let vscode_tokens ((a,b) : VSCRange) (lines : LineToken > FSharpx.Collections.PersistentVector FSharpx.Collections.PersistentVector) = > let in_range x = min lines.Length x > let from, near_to = in_range a.line, in_range (b.line+1) > let toks = ResizeArray() > let rec loop i line_delta = > if i < near_to then > lines.[[i]] |> FSharpx.Collections.PersistentVector.fold (fun > (line_delta,from_prev) (r,x) -> > toks.AddRange [[|line_delta; r.from-from_prev; r.nearTo-r.from; > int (token_groups x); 0|]] > 0, r.from > ) (line_delta, 0) > |> fst |> ((+) 1) |> loop (i+1) > > loop from from > toks.ToArray() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## BlockSplitting > > ── fsharp ────────────────────────────────────────────────────────────────────── > // open FSharpx.Collections > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### LineTokens > > ── fsharp ────────────────────────────────────────────────────────────────────── > type LineTokens = LineToken FSharpx.Collections.PersistentVector > FSharpx.Collections.PersistentVector > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Block<'a> > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Block<'a> = {block: 'a; offset: int} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### block_at > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// Reads the comments up to a statement, and then reads the statement body. > Leaves any errors for the parsing stage. > let block_at (lines : LineTokens) i = > let mutable block = FSharpx.Collections.PersistentVector.empty > let add x = block <- FSharpx.Collections.PersistentVector.conj x block > let rec loop_initial i = > if i < lines.Length then > let x = lines.[[i]] > add x > if 0 < x.Length then > let r,t = x.[[0]] > if r.from = 0 then > match t with > | TokComment _ -> loop_initial (i+1) > | _ -> loop_body (i+1) > else loop_initial (i+1) // This branch will be an error in the > parsing stage unless the token is a comment. > else loop_initial (i+1) > and loop_body i = > if i < lines.Length then > let x = lines.[[i]] > if 0 < x.Length then > let r,_ = x.[[0]] > if r.from <> 0 then add x; loop_body (i+1) > else add x; loop_body (i+1) > loop_initial i > {block = block; offset = i} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### block_all > > ── fsharp ────────────────────────────────────────────────────────────────────── > // Parses all the blocks. > let rec block_all lines i = > if i < FSharpx.Collections.PersistentVector.length lines then > let x = block_at lines i > x :: block_all lines (i+x.block.Length) else [[]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_block_all > > ── fsharp ────────────────────────────────────────────────────────────────────── > // Parses all the blocks with diffing. Only parses those blocks which are dirty > based of the edit range. Preserves ref equality and saves work. > // Without considering ref preservation, it is functionally equivalent to just > call `block_all` on just `lines`. > // This function is difficult to read as it is several operations fused into one > loop. > let wdiff_block_all (blocks : LineTokens Block list) (lines : LineTokens, > lines_added, from, nearTo) = > // Lines added minus lines removed. > let line_adjustment = lines_added - (nearTo - from) > // The dirty block boundary needs to be more conservative when a separator > is added in the first position of block. > // Imagine adding a newline right on a block start. This would extend the > previous block, but the naive check would not react to it. > // The same goes for pasting an indented piece of text. > let dirty_from = let x = lines.[[from]] in from - (if x.Length = 0 || 0 < > (fst x.[[0]]).from then 1 else 0) > let is_dirty (x : LineTokens Block) = (dirty_from <= x.offset && x.offset < > nearTo) || (x.offset <= dirty_from && dirty_from < x.offset + x.block.Length) > let rec loop blocks i = > if i < lines.Length then > match blocks with > | x :: xs -> > // If the block is dirty, forget it. > if is_dirty x then loop xs i else > // If the block is past the removal range, adjust its line > offset. > let x = {x with offset=if nearTo <= x.offset then x.offset + > line_adjustment else x.offset} > // The block can't be dirty here. Hence if the offsets are > the same, so are the blocks. Take it. > if x.offset = i then x :: loop xs (i + x.block.Length) > // Else if the block has been skipped over, forget it. > elif x.offset < i then loop xs i > // Else the block has been dirty filtered, recalculate it. > else let x = block_at lines i in x :: loop blocks (i + > x.block.Length) > | [[]] -> block_all lines i > else [[]] > loop blocks 0 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## BlockParsing > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > arsec.dll" > #r > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > arsecCS.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > // open System > // open FParsec > // open FSharp.Core > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SymbolString > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SymbolString = string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### VarString > > ── fsharp ────────────────────────────────────────────────────────────────────── > type VarString = string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### NominalString > > ── fsharp ────────────────────────────────────────────────────────────────────── > type NominalString = string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Layout > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Layout = Heap | HeapMutable | StackMutable > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### FunType > > ── fsharp ────────────────────────────────────────────────────────────────────── > type FunType = FT_Vanilla | FT_Pointer | FT_Closure // The closure and the > pointer are specific to the C++ backend. > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Op > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Op = > // Converts the function to a specialized type specific to the C++ backend. > | ToFunPtr > | ToFunClosure > > // Compile time hash set > | HashSetCreate > | HashSetAdd > | HashSetContains > | HashSetRemove > | HashSetCount > > // Compile time hash map > | HashMapCreate > | HashMapSetImmutable > | HashMapSet > | HashMapAdd > | HashMapTryAdd > | HashMapContains > | HashMapRemove > | HashMapCount > | HashMapTryGet > > // Pragma > | PragmaUnrollPush > | PragmaUnrollPop > > // Backend branching > | BackendSwitch > > // Reordering check > | UsesOriginalTermVars > | UsesOriginalNominals > > // Imports > | Global > > // Python > | ToPythonRecord > | ToPythonNamedTuple > > // Branching > | While > | Do > | Indent > > // Layout > | LayoutToHeap > | LayoutToHeapMutable > | LayoutToStackMutable > | LayoutIndex > > // Type > | TypeToVar > | TypeToSymbol > | TypeLitToLit > | LitToTypeLit > | LitToSymbol > > // Closure conversion > | Dyn > > // Nominal > | NominalCreate // In addition to regular nominals, it can also creates > unions > | NominalStrip > | NominalTypeApply > > // Union > | Unbox > | Unbox2 > | UnionTag > | UnionUntag > | UnionToRecord > > // String > | StringLength > | StringIndex > | StringSlice > | StaticStringConcat > | Printf // Cuda specific > > // Array > | ArrayCreate > | ArrayLength > | ArrayIndex > | ArrayIndexSet > > // Record > | RecordMap > | RecordIter > | RecordFilter > | RecordFold > | RecordFoldBack > | RecordLength > > // Record Type > | RecordTypeMap > | RecordTypeIter > | RecordTypeFold > | RecordTypeFoldBack > | RecordTypeLength > | RecordTypeTryFind > > // BinOps > | Add > | Sub > | Mult > | Div > | Mod > | Pow > | LTE > | LT > | EQ > | TypeEq > | NEQ > | GT > | GTE > | BoolAnd > | BoolOr > | BitwiseAnd > | BitwiseOr > | BitwiseXor > | BitwiseComplement > | ShiftLeft > | ShiftRight > > // Unary math ops > | Neg > | Tanh > | Log > | Exp > | Sin > | Cos > | Sqrt > | NanIs > | Conv > > // Infinity > | Infinity > | Pi > > // Static Is > | LitIs > | PrimIs > | SymbolIs > | VarIs > | UnionIs > | HeapUnionIs > | LayoutIs > | NominalIs > | FunctionIs > | ExistsIs > | PrototypeHas > > // Static Type Is > | PrimTypeIs > | SymbolTypeIs > | UnionTypeIs > | HeapUnionTypeIs > | LayoutTypeIs > | ExistsTypeIs > | NominalTypeIs > > // Panic > | FailWith > > // Static unary operations > | PrintStatic > | PrintRaw > | ErrorType > | ExistsStrip > | StringLitToSymbol > | SymbolToString > > // Serialization helpers > | VarTag > | TagToSymbol > | FunctionTermSlotsGet > | FunctionTermSlotsSet > | FreeVars > | FreeVarsReplace > | SizeOf > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PatternCompilationErrors > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PatternCompilationErrors = > | DisjointOrPatternVar > | DuplicateTermVar > | DuplicateTypeVar > | ShadowedVar > | DuplicateRecordSymbol > | DuplicateRecordInjection > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ParserErrors > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ParserErrors = > | TypeVarsNeedToBeExplicitForExists > | InvalidPattern of PatternCompilationErrors > | ExpectedKeyword of TokenKeyword > | ExpectedStringOpen | ExpectedStringClose > | ExpectedMacroOpen | ExpectedMacroClose > | ExpectedMacroVar | ExpectedMacroTypeVar | ExpectedMacroTypeLitVar > | ExpectedEscapedChar of is_term_macro : bool > | ExpectedText | ExpectedUnescapedChar > | ExpectedOperator' > | ExpectedOperator of string > | ExpectedUnaryOperator' > | ExpectedUnaryOperator of string > | ExpectedUnit > | ExpectedVar > | ExpectedVarOrOpAsNameOfRecStatement > | ExpectedVarOrOpAsNameOfGlobalStatement > | ExpectedSmallVar > | ExpectedBigVar > | ExpectedLit > | ExpectedSymbolPaired > | SymbolPairedShouldStartWithUppercaseInTypeScope > | ExpectedSymbol > | ExpectedParenthesis of Parenthesis * ParenthesisState > | ExpectedMacroExpression of MacroEnum * ParenthesisState > | ExpectedOpenParenthesis > | ExpectedStatement > | ExpectedEob > | ExpectedFunctionAsBodyOfRecStatement > | ExpectedSinglePatternWhenStatementNameIsNorVarOrOp > | ExpectedGlobalFunction > | ExpectedExpression > | InbuiltOpNotFound > | UnknownOperator > | UnexpectedEob > | UnexpectedAndInlRec > | ForallNotAllowed > | TypecaseNotAllowed > | MetavarNotAllowed > | TermNotAllowed > | UnknownError > | DuplicateRecordTypeVar > | DuplicateForallVar > | DuplicateExistsVar > | DuplicateConstraint > | DuplicateTermRecordSymbol > | DuplicateTermRecordInjection > | DuplicateRecFunctionName > | BottomUpNumberParseError of string * string > | ExpectedPairedSymbolInUnion > | DuplicateUnionKey > | MetavarShadowedByVar > | VarShadowedByMetavar > | ListLiteralsNotAllowedInBottomUp > | ArrayLiteralsNotAllowedInBottomUp > | ForallNotAllowedInTypecase > | ExistsNotAllowedInTypecase > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### RawKindExpr > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RawKindExpr = > | RawKindWildcard > | RawKindStar > | RawKindFun of RawKindExpr * RawKindExpr > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### UnionLayout > > ── fsharp ────────────────────────────────────────────────────────────────────── > type UnionLayout = UStack | UHeap > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### HoVar > > ── fsharp ────────────────────────────────────────────────────────────────────── > type HoVar = VSCRange * (VarString * RawKindExpr) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TypeVar > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TypeVar = HoVar * (VSCRange * VarString) list > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### RawMacro > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RawMacro = > | RawMacroText of VSCRange * string > | RawMacroTerm of VSCRange * RawExpr > | RawMacroType of VSCRange * RawTExpr > | RawMacroTypeLit of VSCRange * RawTExpr > and RawRecordWith = > | RawRecordWithSymbol of (VSCRange * SymbolString) * RawExpr > | RawRecordWithSymbolModify of (VSCRange * SymbolString) * RawExpr > | RawRecordWithInjectVar of (VSCRange * VarString) * RawExpr > | RawRecordWithInjectVarModify of (VSCRange * VarString) * RawExpr > and RawRecordWithout = > | RawRecordWithoutSymbol of VSCRange * SymbolString > | RawRecordWithoutInjectVar of VSCRange * VarString > and PatRecordMember = > | PatRecordMembersSymbol of (VSCRange * SymbolString) * name: Pattern > | PatRecordMembersInjectVar of (VSCRange * VarString) * name: Pattern > and Pattern = > | PatB of VSCRange > | PatE of VSCRange > | PatVar of VSCRange * VarString > | PatDyn of VSCRange * Pattern > | PatUnbox of VSCRange * symbol: string * Pattern > | PatExists of VSCRange * (VSCRange * VarString) list * Pattern > | PatAnnot of VSCRange * Pattern * RawTExpr > | PatPair of VSCRange * Pattern * Pattern > | PatSymbol of VSCRange * string > | PatRecordMembers of VSCRange * PatRecordMember list > | PatOr of VSCRange * Pattern * Pattern > | PatAnd of VSCRange * Pattern * Pattern > | PatValue of VSCRange * Literal > | PatDefaultValue of VSCRange * VarString > | PatWhen of VSCRange * Pattern * RawExpr > | PatNominal of VSCRange * (VSCRange * VarString) * (VSCRange * VarString) > list * Pattern > | PatArray of VSCRange * Pattern list > | PatFilledDefaultValue of VSCRange * VarString * RawTExpr // Filled in by > the inferencer. > and RawExpr = > | RawB of VSCRange > | RawV of VSCRange * VarString * is_tvar_applied : bool > | RawLit of VSCRange * Literal > | RawDefaultLit of VSCRange * string > | RawSymbol of VSCRange * SymbolString > | RawType of VSCRange * RawTExpr > | RawMatch of VSCRange * body: RawExpr * (Pattern * RawExpr) list > | RawFun of VSCRange * (Pattern * RawExpr) list > | RawForall of VSCRange * TypeVar * RawExpr > | RawExists of VSCRange * (VSCRange * RawTExpr list option) * RawExpr > | RawRecBlock of VSCRange * ((VSCRange * VarString) * RawExpr) list * > on_succ: RawExpr // The bodies of a block must be RawFun or RawForall. > | RawRecordWith of VSCRange * RawExpr list * RawRecordWith list * > RawRecordWithout list > | RawOp of VSCRange * Op * RawExpr list > | RawJoinPoint of VSCRange * backend: (VSCRange * string) option * RawExpr * > name: string option > | RawAnnot of VSCRange * RawExpr * RawTExpr > | RawTypecase of VSCRange * RawTExpr * (RawTExpr * RawExpr) list > | RawOpen of VSCRange * (VSCRange * VarString) * (VSCRange * SymbolString) > list * on_succ: RawExpr > | RawApply of VSCRange * RawExpr * RawExpr > | RawIfThenElse of VSCRange * RawExpr * RawExpr * RawExpr > | RawIfThen of VSCRange * RawExpr * RawExpr > | RawPair of VSCRange * RawExpr * RawExpr > | RawSeq of VSCRange * RawExpr * RawExpr > | RawHeapMutableSet of VSCRange * RawExpr * RawExpr list * RawExpr > | RawReal of VSCRange * RawExpr > | RawMacro of VSCRange * RawMacro list > | RawArray of VSCRange * RawExpr list > | RawMissingBody of VSCRange > | RawFilledForall of VSCRange * string * RawExpr // Filled in by the > inferencer. > and RawTExpr = > | RawTWildcard of VSCRange > | RawTB of VSCRange > | RawTMetaVar of VSCRange * VarString > | RawTLit of VSCRange * Literal > | RawTVar of VSCRange * VarString > | RawTPair of VSCRange * RawTExpr * RawTExpr > | RawTFun of VSCRange * RawTExpr * RawTExpr * FunType > | RawTArray of VSCRange * RawTExpr > | RawTRecord of VSCRange * Map<int * string,RawTExpr> > | RawTSymbol of VSCRange * SymbolString > | RawTApply of VSCRange * RawTExpr * RawTExpr > | RawTForall of VSCRange * TypeVar * RawTExpr > | RawTExists of VSCRange * TypeVar list * RawTExpr > | RawTPrim of VSCRange * PrimitiveType > | RawTTerm of VSCRange * RawExpr > | RawTMacro of VSCRange * RawMacro list > | RawTUnion of VSCRange * Map<int * string,bool * RawTExpr> * UnionLayout * > this: RawTExpr // The boolean arg determines whether the union case is > generalized. `this` is the self type. > | RawTLayout of VSCRange * RawTExpr * Layout > | RawTTypecase of VSCRange * RawTExpr * (RawTExpr * RawTExpr) list > | RawTFilledNominal of VSCRange * GlobalId // Filled in by the inferencer. > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### (+.) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let (+.) (a,_) (_,b) = a,b > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### range_of_hovar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let range_of_hovar ((r,_) : HoVar) = r > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### range_of_typevar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let range_of_typevar ((x,_) : TypeVar) = range_of_hovar x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### hovar_name > > ── fsharp ────────────────────────────────────────────────────────────────────── > let hovar_name ((_,(name,_)) : HoVar) = name > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### typevar_name > > ── fsharp ────────────────────────────────────────────────────────────────────── > let typevar_name ((h,_) : TypeVar) = hovar_name h > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### range_of_record_with > > ── fsharp ────────────────────────────────────────────────────────────────────── > let range_of_record_with = function > | RawRecordWithSymbol((r,_),_) > | RawRecordWithSymbolModify((r,_),_) > | RawRecordWithInjectVar((r,_),_) > | RawRecordWithInjectVarModify((r,_),_) -> r > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### range_of_record_without > > ── fsharp ────────────────────────────────────────────────────────────────────── > let range_of_record_without = function > | RawRecordWithoutSymbol(r,_) > | RawRecordWithoutInjectVar(r,_) -> r > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### range_of_pattern > > ── fsharp ────────────────────────────────────────────────────────────────────── > let range_of_pattern = function > | PatB r > | PatE r > | PatVar(r,_) > | PatDyn(r,_) > | PatUnbox(r,_,_) > | PatExists(r,_,_) > | PatSymbol(r,_) > | PatValue(r,_) > | PatDefaultValue(r,_) > | PatRecordMembers(r,_) > | PatArray(r,_) > | PatAnnot(r,_,_) > | PatPair(r,_,_) > | PatOr(r,_,_) > | PatAnd(r,_,_) > | PatWhen(r,_,_) > | PatFilledDefaultValue(r,_,_) > | PatNominal(r,_,_,_) -> r > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### range_of_pat_record_member > > ── fsharp ────────────────────────────────────────────────────────────────────── > let range_of_pat_record_member = function > | PatRecordMembersSymbol((r,_),x) > | PatRecordMembersInjectVar((r,_),x) -> r +. range_of_pattern x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### range_of_expr > > ── fsharp ────────────────────────────────────────────────────────────────────── > let range_of_expr = function > | RawB r > | RawMissingBody r > | RawMacro(r,_) > | RawV(r,_,_) > | RawLit(r,_) > | RawDefaultLit(r,_) > | RawSymbol(r,_) > | RawType(r,_) > | RawJoinPoint(r,_,_,_) > | RawArray(r,_) > | RawMatch(r,_,_) > | RawFun(r,_) > | RawReal(r,_) > | RawRecBlock(r,_,_) > | RawOp(r,_,_) > | RawAnnot(r,_,_) > | RawTypecase(r,_,_) > | RawForall(r,_,_) > | RawExists(r,_,_) > | RawFilledForall(r,_,_) > | RawApply(r,_,_) > | RawPair(r,_,_) > | RawIfThen(r,_,_) > | RawSeq(r,_,_) > | RawHeapMutableSet(r,_,_,_) > | RawRecordWith(r,_,_,_) > | RawIfThenElse(r,_,_,_) > | RawOpen(r,_,_,_) -> r > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### rawv > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rawv (r,x) = RawV(r,x,true) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### range_of_texpr > > ── fsharp ────────────────────────────────────────────────────────────────────── > let range_of_texpr = function > | RawTWildcard r > | RawTB r > | RawTLit(r,_) > | RawTMacro(r,_) > | RawTMetaVar(r,_) > | RawTVar(r,_) > | RawTArray(r,_) > | RawTRecord(r,_) > | RawTUnion(r,_,_,_) > | RawTSymbol(r,_) > | RawTPrim(r,_) > | RawTTerm(r,_) > | RawTFilledNominal(r,_) > | RawTPair(r,_,_) > | RawTFun(r,_,_,_) > | RawTApply(r,_,_) > | RawTLayout(r,_,_) > | RawTExists(r,_,_) > | RawTTypecase(r,_,_) > | RawTForall(r,_,_) -> r > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### range_of_texpr_gadt_constructor > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec range_of_texpr_gadt_constructor = function > | RawTForall(_,_,x) -> range_of_texpr_gadt_constructor x > | RawTFun(_,_,x,_) | x -> range_of_texpr x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### range_of_texpr_gadt_body > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec range_of_texpr_gadt_body = function > | RawTForall(_,_,x) -> range_of_texpr_gadt_body x > | RawTFun(_,x,_,_) | x -> range_of_texpr x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### VectorCord > > ── fsharp ────────────────────────────────────────────────────────────────────── > type VectorCord = {|row : int; col : int|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Env__ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Env__ = { > semantic_updates : (VectorCord * SemanticTokenLegend) ResizeArray > tokens_cords : VectorCord [[]] > tokens : (VSCRange * SpiralToken) [[]] > comments : LineComment option [[]] > i : int ref > is_top_down : bool > default_env : DefaultEnv > } with > > member d.Index with get() = d.i.contents and set(i) = d.i.Value <- i > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### BlockParsingEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type BlockParsingEnv = Env__ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### try_current_template > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline try_current_template (d : BlockParsingEnv) on_succ on_fail = > let i = d.Index > if i < d.tokens.Length then on_succ d.tokens.[[i]] > else on_fail() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### try_current > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline try_current d f = try_current_template d (fun (p,t) -> f (p, t)) (fun > () -> Result.Error [[]]) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### print_current > > ── fsharp ────────────────────────────────────────────────────────────────────── > let print_current d = try_current d (fun x -> printfn "%A" x; Ok()) // For > parser debugging purposes. > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### line_template > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline line_template d f = try_current_template d (fst >> f) (fun _ -> -1) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### col > > ── fsharp ────────────────────────────────────────────────────────────────────── > let col d = line_template d (fun (r,_) -> r.character) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### lineBlockParsing > > ── fsharp ────────────────────────────────────────────────────────────────────── > let lineBlockParsing d = line_template d (fun (r,_) -> r.line) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip' (d : BlockParsingEnv) i = d.i.Value <- d.i.contents+i > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skipBlockParsing > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skipBlockParsing d = skip' d 1 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip_string_open > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip_string_open d = > try_current d <| function > | p,TokStringOpen -> skipBlockParsing d; Result.Ok(p) > | p, _ -> Result.Error [[p, ExpectedStringOpen]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip_string_close > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip_string_close d = > try_current d <| function > | p,TokStringClose -> skipBlockParsing d; Result.Ok(p) > | p, _ -> Result.Error [[p, ExpectedStringClose]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip_macro_open > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip_macro_open d = > try_current d <| function > | p,TokMacroOpen -> skipBlockParsing d; Ok(p) > | p, _ -> Result.Error [[p, ExpectedMacroOpen]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip_macro_close > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip_macro_close d = > try_current d <| function > | p,TokMacroClose -> skipBlockParsing d; Ok(p) > | p, _ -> Result.Error [[p, ExpectedMacroClose]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_text > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_text is_term_macro d = > let (+.) a b = > match a with > | Some a -> Some (a +. b) > | None -> Some b > let rec loop (a : VSCRange option) (str : System.Text.StringBuilder) = > try_current d <| function > | b,TokText x -> skipBlockParsing d; loop (a +. b) (str.Append(x)) > | b,TokEscapedVar when is_term_macro -> skipBlockParsing d; loop (a > +. b) (str.Append("\\v")) > | b,(TokEscapedChar x | TokUnescapedChar x) -> skipBlockParsing d; > loop (a +. b) (str.Append(x)) > | b, _ -> > if Option.isNone a then Result.Error [[b, ExpectedText; b, > ExpectedEscapedChar is_term_macro; b, ExpectedUnescapedChar]] > else Result.Ok(Option.get a, str.ToString()) > loop None (System.Text.StringBuilder()) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_macro_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_macro_var d = > try_current d <| function > | p, TokMacroTermVar x -> skipBlockParsing d; > Result.Ok(RawMacroTerm(p,rawv(p,x))) > | p, TokMacroTypeVar x -> skipBlockParsing d; > Result.Ok(RawMacroType(p,RawTVar(p,x))) > | p, TokMacroTypeLitVar x -> skipBlockParsing d; > Result.Ok(RawMacroTypeLit(p,RawTVar(p,x))) > | p,_ -> Error [[p, ExpectedMacroVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_macro_type_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_macro_type_var d = > try_current d <| function > | p, TokMacroTypeVar x -> skipBlockParsing d; > Result.Ok(RawMacroType(p,RawTVar(p,x))) > | p, TokMacroTypeLitVar x -> skipBlockParsing d; > Result.Ok(RawMacroTypeLit(p,RawTVar(p,x))) > | p,_ -> Error [[p, ExpectedMacroTypeVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip_keyword > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip_keyword t d = > try_current d <| function > | p,TokKeyword t' when t = t' -> skipBlockParsing d; Result.Ok t' > | p, _ -> Error [[p, ExpectedKeyword t]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip_keyword' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip_keyword' t d = > try_current d <| function > | p,TokKeyword t' when t = t' -> skipBlockParsing d; Result.Ok p > | p, _ -> Error [[p, ExpectedKeyword t]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_unary_op > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_unary_op d = > try_current d <| function > | p, TokUnaryOperator(t',_) -> skipBlockParsing d; Result.Ok t' > | p, _ -> Error [[p, ExpectedUnaryOperator']] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_unary_op' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_unary_op' d = > try_current d <| function > | p, TokUnaryOperator(t',_) -> skipBlockParsing d; Result.Ok(p,t') > | p, _ -> Error [[p, ExpectedUnaryOperator']] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_op > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_op d = > try_current d <| function > | p, TokOperator(t',_) -> skipBlockParsing d; Result.Ok t' > | p, _ -> Error [[p, ExpectedOperator']] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_op' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_op' d = > try_current d <| function > | p, TokOperator(t',_) -> skipBlockParsing d; Result.Ok(p,t') > | p, _ -> Error [[p, ExpectedOperator']] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### update_semantic > > ── fsharp ────────────────────────────────────────────────────────────────────── > let update_semantic (d : BlockParsingEnv) = let i = d.Index in fun x -> > d.semantic_updates.Add(d.tokens_cords.[[i]], x) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_op_type > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_op_type d = > try_current d <| function > | p, TokOperator(t',r) -> update_semantic d > SemanticTokenLegend.type_variable; skipBlockParsing d; Result.Ok(p,t') > | p, _ -> Error [[p, ExpectedOperator']] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip_op > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip_op t d = > try_current d <| function > | p, TokOperator(t',_) when t' = t -> skipBlockParsing d; Result.Ok p > | p, _ -> Error [[p, ExpectedOperator t]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip_unary_op > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip_unary_op t d = > try_current d <| function > | p, TokUnaryOperator(t',_) when t' = t -> skipBlockParsing d; Result.Ok > t' > | p, _ -> Error [[p, ExpectedUnaryOperator t]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_var d = > try_current d <| function > | p, TokVar(t',_) -> skipBlockParsing d; Result.Ok t' > | p, _ -> Error [[p, ExpectedVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_var' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_var' d = > try_current d <| function > | p, TokVar(t',_) -> let r = update_semantic d in skipBlockParsing d; > Result.Ok(p,t',r) > | p, _ -> Error [[p, ExpectedVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_var'' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_var'' d = > try_current d <| function > | p, TokVar(t',_) -> skipBlockParsing d; Result.Ok(p,t') > | p, _ -> Error [[p, ExpectedVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_big_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_big_var d = > try_current d <| function > | p, TokVar(t',_) when System.Char.IsUpper(t',0) -> skipBlockParsing d; > Result.Ok(p,t') > | p, _ -> Error [[p, ExpectedBigVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_var_as_symbol > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_var_as_symbol d = > try_current d <| function > | p, TokVar(t',_) -> update_semantic d SemanticTokenLegend.symbol; > skipBlockParsing d; Result.Ok t' > | p, _ -> Error [[p, ExpectedVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_big_var_as_symbol > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_big_var_as_symbol d = > try_current d <| function > | p, TokVar(t',_) when System.Char.IsUpper(t',0) -> update_semantic d > SemanticTokenLegend.symbol; skipBlockParsing d; Result.Ok t' > | p, _ -> Error [[p, ExpectedBigVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_big_var_as_keyword > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_big_var_as_keyword d = > try_current d <| function > | p, TokVar(t',_) when System.Char.IsUpper(t',0) -> update_semantic d > SemanticTokenLegend.keyword; skipBlockParsing d; Result.Ok(p,t') > | p, _ -> Error [[p, ExpectedBigVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_small_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_small_var d = > try_current d <| function > | p, TokVar(t',r) when System.Char.IsUpper(t',0) = false -> > skipBlockParsing d; Result.Ok t' > | p, _ -> Error [[p, ExpectedSmallVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_small_var' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_small_var' d = > try_current d <| function > | p, TokVar(t',r) when System.Char.IsUpper(t',0) = false -> > skipBlockParsing d; Result.Ok(p,t') > | p, _ -> Error [[p, ExpectedSmallVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_big_type_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_big_type_var d = > try_current d <| function > | p, TokVar(t',r) when System.Char.IsUpper(t',0) -> update_semantic d > SemanticTokenLegend.type_variable; skipBlockParsing d; Result.Ok(t') > | p, _ -> Error [[p, ExpectedSmallVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_big_type_var' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_big_type_var' d = > try_current d <| function > | p, TokVar(t',r) when System.Char.IsUpper(t',0) -> update_semantic d > SemanticTokenLegend.type_variable; skipBlockParsing d; Result.Ok(p,t') > | p, _ -> Error [[p, ExpectedSmallVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_small_type_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_small_type_var d = > try_current d <| function > | p, TokVar(t',r) when System.Char.IsUpper(t',0) = false -> > update_semantic d SemanticTokenLegend.type_variable; skipBlockParsing d; > Result.Ok(t') > | p, _ -> Error [[p, ExpectedSmallVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_small_type_var' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_small_type_var' d = > try_current d <| function > | p, TokVar(t',r) when System.Char.IsUpper(t',0) = false -> > update_semantic d SemanticTokenLegend.type_variable; skipBlockParsing d; > Result.Ok(p,t') > | p, _ -> Error [[p, ExpectedSmallVar]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_value > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_value d = > try_current d <| function > | p, TokValue t' -> > skipBlockParsing d > if d.Index < d.tokens.Length then > match snd d.tokens.[[d.Index]] with > | TokValueSuffix -> skipBlockParsing d > | _ -> () > Result.Ok(p,t') > | p, _ -> Error [[p, ExpectedLit]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_symbol > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_symbol d = > try_current d <| function > | p, TokSymbol(t',r) -> skipBlockParsing d; Result.Ok(p,t') > | p, _ -> Error [[p, ExpectedSymbol]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip_parenthesis > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip_parenthesis a b d = > try_current d <| function > | p, TokParenthesis(a',b') when a = a' && b = b' -> skipBlockParsing d; > Result.Ok() > | p, _ -> Error [[p, ExpectedParenthesis(a,b)]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### skip_macro_expression > > ── fsharp ────────────────────────────────────────────────────────────────────── > let skip_macro_expression a b d = > try_current d <| function > | p, TokMacroExpression(a',b') when a = a' && b = b' -> skipBlockParsing > d; Result.Ok() > | p, _ -> Error [[p, ExpectedMacroExpression(a,b)]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### on_succ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let on_succ x _ = Result.Ok x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### macro_expression > > ── fsharp ────────────────────────────────────────────────────────────────────── > // open FParsec > let macro_expression ty a d = (skip_macro_expression ty Open >>. a .>> > skip_macro_expression ty Close) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### rounds > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rounds a d = (skip_parenthesis Round Open >>. a .>> skip_parenthesis Round > Close) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### curlies > > ── fsharp ────────────────────────────────────────────────────────────────────── > let curlies a d = (skip_parenthesis Curly Open >>. a .>> skip_parenthesis Curly > Close) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### squares > > ── fsharp ────────────────────────────────────────────────────────────────────── > let squares a d = (skip_parenthesis Square Open >>. a .>> skip_parenthesis > Square Close) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### indexBlockParsing > > ── fsharp ────────────────────────────────────────────────────────────────────── > let indexBlockParsing (t : BlockParsingEnv) = t.Index > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### index_setBlockParsing > > ── fsharp ────────────────────────────────────────────────────────────────────── > let index_setBlockParsing v (t : BlockParsingEnv) = t.Index <- v > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### rangeBlockParsing > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline rangeBlockParsing exp s = > let i = indexBlockParsing s > exp s |> Result.map (fun x -> > let i' = indexBlockParsing s > if i < i' then fst s.tokens.[[i]] +. fst s.tokens.[[i'-1]], x : VSCRange > * _ > else > failwith "Compiler error: The parser passed into `range` has to > consume at least one token for it to work." > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### kind > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec kind d = (sepBy1 ((skip_op "*" >>% RawKindStar) <|> rounds kind) > (skip_op "->") |>> List.reduceBack (fun a b -> RawKindFun (a,b))) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### duplicates > > ── fsharp ────────────────────────────────────────────────────────────────────── > let duplicates er x = > let h = System.Collections.Generic.HashSet() > x |> List.choose (fun (r : VSCRange,n : string) -> if h.Add n = false then > Some(r,er) else None) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### indentBlockParsing > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline indentBlockParsing i op next d = if op i (col d) then next d else > Error [[]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### record_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let record_var d = (read_var_as_symbol <|> rounds read_op) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### patterns_validate > > ── fsharp ────────────────────────────────────────────────────────────────────── > let patterns_validate pats = > let pos = System.Collections.Generic.Dictionary(HashIdentity.Reference) > let errors = ResizeArray() > let rec loop is_type pat = > let loop = loop is_type > let inline duplicate_var() = InvalidPattern (if is_type then > DuplicateTypeVar else DuplicateTermVar) > match pat with > | PatFilledDefaultValue _ | PatDefaultValue _ | PatValue _ | PatSymbol _ > | PatE _ | PatB _ -> Set.empty > | PatArray(_,x) -> > List.fold (fun s x -> > let x = loop x > let inters = Set.intersect s x > if Set.isEmpty inters = false then inters |> Set.iter (fun x -> > errors.Add(pos.[[x]], duplicate_var())) > s + x > ) Set.empty x > | PatExists(r,l,p) -> > if is_type then > let s = List.fold (fun s (r,x) -> pos.Add(x,r); Set.add x s) > Set.empty l > let x = loop p > let inters = Set.intersect s x > if Set.isEmpty inters = false then inters |> Set.iter (fun x -> > errors.Add(pos.[[x]], duplicate_var())) > s + x > else > loop p > | PatVar(r,x) -> > if is_type then > Set.empty > else > pos.Add(x,r) > Set.singleton x > | PatDyn(_,p) | PatAnnot (_,p,_) | PatNominal(_,_,_,p) | PatUnbox(_,_,p) > | PatWhen(_,p,_) -> loop p > | PatRecordMembers(_,items) -> > let symbols = System.Collections.Generic.HashSet() > let injects = System.Collections.Generic.HashSet() > let vars = System.Collections.Generic.HashSet() > List.iter (fun item -> > match item with > | PatRecordMembersSymbol((r,keyword),name) -> > if symbols.Add(keyword) = false then errors.Add (r, > InvalidPattern DuplicateRecordSymbol); Set.empty else loop name > | PatRecordMembersInjectVar((r,var),name) -> > if injects.Add(var) = false then errors.Add (r, > InvalidPattern DuplicateRecordInjection); Set.empty else loop name > |> Set.iter (fun x -> if vars.Add x = false then errors.Add > (pos.[[x]], duplicate_var())) > ) items > Set vars > | PatPair(_,a,b) | PatAnd(_,a,b) -> > let a, b = loop a, loop b > Set.intersect b a |> Set.iter (fun x -> errors.Add (pos.[[x]], > duplicate_var())) > a + b > | PatOr(_,a,b) -> > let a, b = loop a, loop b > let f = Set.iter (fun x -> errors.Add (pos.[[x]], InvalidPattern > DisjointOrPatternVar)) > f (a-b); f (b-a) > a > > let validate is_type = > List.fold (fun s x -> > let s' = loop is_type x > Set.intersect s' s |> Set.iter (fun x -> > errors.Add(pos.[[x]],InvalidPattern ShadowedVar)) > s + s' > ) Set.empty pats |> ignore > validate true; validate false > errors |> Seq.toList > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### join_point > > ── fsharp ────────────────────────────────────────────────────────────────────── > let join_point is_let name = function // Has the effect of removing nested join > points due to not duplicating them. > | RawJoinPoint(a,b,c,_) -> RawJoinPoint(a,b,c,name) > | x -> if is_let then RawJoinPoint(range_of_expr x, None, x, name) else x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### join_point_backend > > ── fsharp ────────────────────────────────────────────────────────────────────── > let join_point_backend (a,b) = RawJoinPoint(range_of_expr b, Some a, b, None) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### unintern > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// Some places need unique string refs, so this is to keep the compiler from > interning static strings. > let unintern (x : string) = System.Text.StringBuilder(x).ToString() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### adjust_join_point > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec adjust_join_point is_let name x = > let dyn_if_let a = if is_let then PatDyn(range_of_pattern a, a) else a > match x with > | RawForall(r,a,b) -> RawForall(r,a,adjust_join_point is_let name b) > | RawFun(r,[[a,b]]) -> RawFun(r,[[dyn_if_let a, adjust_join_point is_let > name b]]) > | RawFun(r,l) -> > let empty = fst r, fst r > let n = unintern " arg" > let a = PatVar(empty,n) |> dyn_if_let > let b = RawMatch(empty,rawv(empty,n),l) > RawFun(r,[[a,join_point is_let name b]]) > | x -> join_point is_let name x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### adjust_join_point' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let adjust_join_point' is_let name = function > | RawForall _ | RawFun _ as x -> adjust_join_point is_let name x > | x -> x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### inl_or_let_process > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inl_or_let_process (r, (is_let, is_rec, name, foralls, pats, body)) _ = > match is_rec, name, foralls, pats with > | false, _, [[]], [[]] -> > match patterns_validate [[name]] with > | [[]] -> Result.Ok((r,name,adjust_join_point' is_let (match name with > PatVar(_,name) -> Some name | _ -> None) body),is_rec) > | ers -> Error ers > | _, PatVar(_,name'), _, _ -> > match patterns_validate (if is_rec then name :: pats else pats) with > | [[]] -> > let body = > let dyn_if_let x = if is_let then PatDyn(range_of_pattern x, x) > else x > adjust_join_point is_let (Some name') body > |> List.foldBack (fun pat body -> RawFun(range_of_pattern pat +. > range_of_expr body,[[dyn_if_let pat,body]])) pats > |> List.foldBack (fun typevar body -> RawForall(range_of_typevar > typevar +. range_of_expr body,typevar,body)) foralls > match is_rec, body with > | false, _ | true, (RawFun _ | RawForall _) -> > Result.Ok((r,name,body),is_rec) > | true, _ -> Error [[r, ExpectedFunctionAsBodyOfRecStatement]] > | ers -> Error ers > | true, _, _, _ -> Error [[range_of_pattern name, > ExpectedVarOrOpAsNameOfRecStatement]] > | false, _, _, _ -> Error [[range_of_pattern name, > ExpectedSinglePatternWhenStatementNameIsNorVarOrOp]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ho_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let ho_var d : Result<HoVar,_> = rangeBlockParsing ((read_small_type_var |>> fun > x -> x, RawKindWildcard) <|> rounds ((read_small_type_var .>> skip_op ":") .>>. > kind)) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### forall_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let forall_var d : Result<TypeVar,_> = (ho_var .>>. (curlies (sepBy > (read_small_type_var' <|> rounds read_op_type) (skip_op ";")) <|>% [[]])) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### forall > > ── fsharp ────────────────────────────────────────────────────────────────────── > let forall d = > (skip_keyword SpecForall >>. many1 forall_var .>> skip_op "." > >>= fun q _ -> > let x' = q |> List.collect (fun (_,l) -> duplicates DuplicateConstraint > l) > let x = q |> List.map (fun ((r,(a,_)),_) -> r,a) |> duplicates > DuplicateForallVar > match List.append x x' with [[]] -> Result.Ok q | er -> Result.Error er > ) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### pat_exists' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let pat_exists' d = > (skip_keyword SpecExists >>. many (rangeBlockParsing read_small_type_var) > .>> skip_op "." > >>= fun q _ -> > match duplicates DuplicateExistsVar q with [[]] -> Result.Ok q | er -> > Error er > ) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### exists > > ── fsharp ────────────────────────────────────────────────────────────────────── > let exists d = > (skip_keyword SpecExists >>. many forall_var .>> skip_op "." > >>= fun q _ -> > let x' = q |> List.collect (fun (_,l) -> duplicates DuplicateConstraint > l) > let x = q |> List.map (fun ((r,(a,_)),_) -> r,a) |> duplicates > DuplicateExistsVar > match List.append x x' with [[]] -> Result.Ok q | er -> Error er > ) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### annotated_body > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline annotated_body sep exp ty = > pipe2 (opt (skip_op ":" >>. ty)) > (skip_op sep .>>. opt exp) > (fun a (r,b) -> > let b = match b with Some b -> b | None -> RawMissingBody r > match a with > | Some a -> RawAnnot(range_of_expr b +. range_of_texpr a,b,a) > | None -> b) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### inl_or_let > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline inl_or_let exp pattern ty = > rangeBlockParsing (tuple6 ((skip_keyword SpecInl >>% false) <|> > (skip_keyword SpecLet >>% true)) > ((skip_keyword SpecRec >>% true) <|>% false) pattern > (forall <|>% [[]]) (many pattern) (annotated_body "=" exp ty)) > >>= inl_or_let_process > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### and_inl_or_let > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline and_inl_or_let exp pattern ty = > rangeBlockParsing (tuple6 (skip_keyword SpecAnd >>. ((skip_keyword SpecInl > >>% false) <|> (skip_keyword SpecLet >>% true))) > (fun _ -> Result.Ok true) pattern > (forall <|>% [[]]) (many pattern) (annotated_body "=" exp ty)) > >>= inl_or_let_process > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Associativity > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Associativity = FParsec.Associativity > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### inbuilt_operators > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inbuilt_operators x = > match x with > | "+" -> ValueSome(60, Associativity.Left) > | "-" -> ValueSome(60, Associativity.Left) > | "*" -> ValueSome(70, Associativity.Left) > | "/" -> ValueSome(70, Associativity.Left) > | "%" -> ValueSome(70, Associativity.Left) > | "|>" -> ValueSome(10, Associativity.Left) > | ">>" -> ValueSome(10, Associativity.Left) > | "<-" -> ValueSome(4, Associativity.Left) > > | "<=" -> ValueSome(40, Associativity.None) > | "<" -> ValueSome(40, Associativity.None) > | "=" -> ValueSome(40, Associativity.None) > | "`=" -> ValueSome(40, Associativity.None) > | ">" -> ValueSome(40, Associativity.None) > | ">=" -> ValueSome(40, Associativity.None) > | "<>" -> ValueSome(40, Associativity.None) > | "<<<" -> ValueSome(40, Associativity.None) > | ">>>" -> ValueSome(40, Associativity.None) > | "&&&" -> ValueSome(40, Associativity.None) > | "|||" -> ValueSome(40, Associativity.None) > > | "||" -> ValueSome(20, Associativity.Right) > | "&&" -> ValueSome(30, Associativity.Right) > | "::" -> ValueSome(50, Associativity.Right) > | "^" -> ValueSome(45, Associativity.Right) > | "<|" -> ValueSome(10, Associativity.Right) > | "<<" -> ValueSome(10, Associativity.Right) > | "." -> ValueSome(2, Associativity.Right) > | "," -> ValueSome(6, Associativity.Right) > | ":>" -> ValueSome(35, Associativity.Right) > | ":?>" -> ValueSome(35, Associativity.Right) > | "**" -> ValueSome(80, Associativity.Right) > | _ -> ValueNone > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### precedence_associativity > > ── fsharp ────────────────────────────────────────────────────────────────────── > // The `.` operator has special behavior similar to F#. > let rec precedence_associativity name = > if 0 < String.length name then > if 1 < String.length name && name.[[0]] = '.' then > precedence_associativity name.[[1..]] > else > match inbuilt_operators name with > | ValueNone -> precedence_associativity (name.[[0..name.Length-2]]) > | v -> v > else ValueNone > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### op > > ── fsharp ────────────────────────────────────────────────────────────────────── > let op (d : BlockParsingEnv) = > rangeBlockParsing read_op d |> Result.bind (fun (o,x) -> > match x with > | "=>" | "|" | ":" | ";" -> skip' d -1; Error [[]] // Separators get > special handling for sake of better error messages. > | _ -> > match precedence_associativity x with // TODO: Might be good to > memoize this. > | ValueNone -> Error [[o, UnknownOperator]] > | ValueSome(p,a) -> > let inline f on_succ = Ok(p,a,fun (a,b) -> > let ra, rb = range_of_expr a, range_of_expr b > let r = ra +. rb > on_succ(r,a,b) > ) > match x with > | "." -> f RawSeq > | "&&" -> f (fun (r,a,b) -> RawIfThenElse(r,a,b,RawLit(o,LitBool > false))) > | "||" -> f (fun (r,a,b) -> RawIfThenElse(r,a,RawLit(o,LitBool > true),b)) > | "," -> f RawPair > | "<-" -> f (fun (r,a,c) -> > let rec loop l = function > | RawApply(_,a,b) -> loop (b :: l) a > | a -> a, l > let a,b = loop [[]] a > RawHeapMutableSet(r,a,b,c) > ) > | x -> f (fun (r,a,b) -> RawApply(r,RawApply(r +. > o,rawv(o,x),a),b)) > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### string_to_op_dict > > ── fsharp ────────────────────────────────────────────────────────────────────── > let string_to_op_dict : Dictionary<string,Op> = > System.Collections.Generic.Dictionary(HashIdentity.Structural) > > ── fsharp ────────────────────────────────────────────────────────────────────── > Microsoft.FSharp.Reflection.FSharpType.GetUnionCases(typeof<Op>) > |> Array.iter (fun x -> string_to_op_dict.[[x.Name]] <- > Microsoft.FSharp.Reflection.FSharpValue.MakeUnion(x,[[||]]) :?> Op) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### string_to_op > > ── fsharp ────────────────────────────────────────────────────────────────────── > let string_to_op x = string_to_op_dict.TryGetValue x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### symbol_paired_concat > > ── fsharp ────────────────────────────────────────────────────────────────────── > let symbol_paired_concat k = > let b = System.Text.StringBuilder() > List.iter (fun (_, x : string) -> b.Append(x).Append('_') |> ignore) k > b.ToString() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### module_openBlockParsing > > ── fsharp ────────────────────────────────────────────────────────────────────── > let module_openBlockParsing = rangeBlockParsing ((skip_keyword SpecOpen >>. > read_small_var') .>>. (many read_symbol)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### bar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let bar i d = indentBlockParsing i (<=) (skip_op "|") d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### pat_pair > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline pat_pair next = > sepBy1 next (skip_op ",") > |>> List.reduceBack (fun a b -> PatPair(range_of_pattern a +. > range_of_pattern b,a,b)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### RootTypeFlags > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RootTypeFlags = { > allow_typecase_metavars : bool > allow_term : bool > allow_wildcard : bool > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### root_type_defaults > > ── fsharp ────────────────────────────────────────────────────────────────────── > let root_type_defaults = { > allow_typecase_metavars = false > allow_term = false > allow_wildcard = false > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### bottom_up_number > > ── fsharp ────────────────────────────────────────────────────────────────────── > let bottom_up_number (default_env : DefaultEnv) (r : VSCRange,x : string) = > let inline f string_to_val val_to_lit val_dsc = > match string_to_val x with > | true, x -> Ok(r, val_to_lit x) > | false, _ -> Error [[r, BottomUpNumberParseError(x,val_dsc)]] > if x.Contains '.' then > match default_env.default_float with > | Float32T -> f System.Single.TryParse LitFloat32 "f32" > | Float64T -> f System.Double.TryParse LitFloat64 "f64" > | x -> failwithf "Compiler error: Invalid default float type. Got: %A" x > else > match default_env.default_int with > | Int8T -> f System.SByte.TryParse LitInt8 "i8" > | Int16T -> f System.Int16.TryParse LitInt16 "i16" > | Int32T -> f System.Int32.TryParse LitInt32 "i32" > | Int64T -> f System.Int64.TryParse LitInt64 "i64" > | UInt8T -> f System.Byte.TryParse LitUInt8 "u8" > | UInt16T -> f System.UInt16.TryParse LitUInt16 "u16" > | UInt32T -> f System.UInt32.TryParse LitUInt32 "u32" > | UInt64T -> f System.UInt64.TryParse LitUInt64 "u64" > | x -> failwithf "Compiler error: Invalid default int type. Got: %A" x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### typecase_validate > > ── fsharp ────────────────────────────────────────────────────────────────────── > let typecase_validate x _ = > let metavars = System.Collections.Generic.HashSet() > let vars = System.Collections.Generic.HashSet() > let errors = ResizeArray() > let rec f = function > | RawTFilledNominal _ | RawTTerm _ | RawTTypecase _ -> failwith > "Compiler error: This case is not supposed to appear in typecase." > | RawTForall(r,_,_) -> errors.Add(r,ForallNotAllowedInTypecase) > | RawTExists(r,_,_) -> errors.Add(r,ExistsNotAllowedInTypecase) > | RawTLit _ | RawTPrim _ | RawTSymbol _ | RawTB _ | RawTWildcard _ -> () > | RawTMetaVar(r,a) -> if vars.Contains(a) then > errors.Add(r,MetavarShadowedByVar) else metavars.Add(a) |> ignore > | RawTVar(r,a) -> if metavars.Contains(a) then > errors.Add(r,VarShadowedByMetavar) else vars.Add(a) |> ignore > | RawTApply(_,a,b) | RawTFun(_,a,b,_) | RawTPair(_,a,b) -> f a; f b > | RawTLayout(_,a,_) | RawTArray(_,a) -> f a > | RawTUnion(_,a,_,_) -> Map.iter (fun _ x -> f (snd x)) a > | RawTRecord(_,a) -> Map.iter (fun _ -> f) a > | RawTMacro(_,a) -> a |> List.iter (function RawMacroType(_,a) -> f a | > _ -> ()) > f x > if 0 < errors.Count then Error (Seq.toList errors) else Ok(x) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### expr_tight > > ── fsharp ────────────────────────────────────────────────────────────────────── > // Parses an expression only if it is directly next to the previous one. > let inline expr_tight next (d: BlockParsingEnv) = > let i = indexBlockParsing d > if 0 < i && i < d.tokens.Length then > let r,r' = snd (fst d.tokens.[[i-1]]), fst (fst d.tokens.[[i]]) > if r.line = r'.line && r.character = r'.character then next d else Error > [[]] > else Error [[]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_default_value' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline read_default_value' f d = > try_current d <| function > | p, TokDefaultValue t' -> skipBlockParsing d; f (p,t') > | p, _ -> Error [[p, ExpectedLit]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_default_value > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline read_default_value on_top on_bot d = > read_default_value' (fun (p,t') -> > if d.is_top_down then Ok(on_top (p,t')) > else bottom_up_number d.default_env (p,t') |> Result.map on_bot > ) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_string > > ── fsharp ────────────────────────────────────────────────────────────────────── > let read_string = tuple3 skip_string_open ((read_text false |>> snd) <|>% "") > skip_string_close > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### pat_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let pat_var d = (read_small_var' |>> PatVar) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### pat_list_pair > > ── fsharp ────────────────────────────────────────────────────────────────────── > let pat_list_pair r a b = PatUnbox(r,"Cons",PatPair(r,a,b)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### root_pattern_var_nominal_union > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec root_pattern_var_nominal_union s = > (read_var' >>= fun (r,a,re) s -> > if System.Char.IsUpper(a,0) then > (opt root_pattern_var |>> fun b -> > re SemanticTokenLegend.symbol > let b = match b with Some b -> b | None -> PatE r > PatUnbox(r,a,b) > ) s > else > (many (expr_tight read_symbol) >>= fun syms s -> > match syms with > | [[]] -> > (opt root_pattern_var |>> fun b -> > match b with > | Some b -> > re SemanticTokenLegend.type_variable > PatNominal(r +. range_of_pattern b,(r,a),syms,b) > | None -> > PatVar(r,a) > ) s > | _ -> > (root_pattern_var |>> fun b -> > re SemanticTokenLegend.type_variable > PatNominal(r +. range_of_pattern b,(r,a),syms,b) > ) s > ) s > ) s > and root_pattern_wildcard d = (skip_keyword' SpecWildcard |>> PatE) d > and root_pattern_dyn d = (rangeBlockParsing (skip_unary_op "~" >>. > root_pattern_var) |>> PatDyn) d > and root_pattern_record d = > let pat_record_item = > let inj = skip_unary_op "$" >>. read_small_var' |>> fun a -> > PatRecordMembersInjectVar,a > let var = rangeBlockParsing record_var |>> fun a -> > PatRecordMembersSymbol,a > ((inj <|> var) .>>. (opt (skip_op "=" >>. root_pattern_pair))) > |>> fun ((f,a),b) -> f (a, defaultArg b (PatVar a)) > (rangeBlockParsing (curlies (many pat_record_item)) |>> PatRecordMembers) d > and root_pattern_type s = > pipe2 root_pattern (opt (skip_op ":" >>. root_type_annot)) > (fun a -> function Some b -> PatAnnot(range_of_pattern a +. > range_of_texpr b,a,b) | None -> a) s > and root_pattern_rounds d = > (rangeBlockParsing (rounds ((((read_op' |>> PatVar) <|> root_pattern_type) > |>> fun x _ -> x) <|>% PatB)) > |>> fun (r,x) -> x r) d > and pat_array s = (skip_unary_op ";" >>. rangeBlockParsing (squares (sepBy > root_pattern_type (skip_op ";"))) |>> fun (r,x) -> PatArray(r,x)) s > and pat_list s = > (rangeBlockParsing (squares (sepBy root_pattern_type (skip_op ";"))) > |>> fun ((r,_),x) -> let r = r,r in List.foldBack (pat_list_pair r) x > (PatUnbox(r,"Nil",PatB r))) s > and pat_exists s = (rangeBlockParsing (pat_exists' .>>. root_pattern) |>> fun > (r,(l,b)) -> PatExists(r,l,b)) s > and root_pattern s = > let body s = > let pat_value = (read_value |>> PatValue) <|> (read_default_value > PatDefaultValue PatValue) > let pat_string = read_string |>> (fun (a,x,b) -> PatValue(a +. > b,LitString x)) > let pat_symbol = read_symbol |>> PatSymbol > let (+) = alt (indexBlockParsing s) > (root_pattern_rounds + root_pattern_var_nominal_union + > root_pattern_wildcard + root_pattern_dyn + pat_value + pat_string > + root_pattern_record + pat_symbol + pat_array + pat_list + pat_exists) > s > > let pat_and = sepBy1 body (skip_op "&") |>> List.reduce (fun a b -> > PatAnd(range_of_pattern a +. range_of_pattern b,a,b)) > let pat_pair = pat_pair pat_and > let pat_cons = rangeBlockParsing (sepBy1 pat_pair (skip_op "::")) |>> fun > (r,x) -> List.reduceBack (pat_list_pair r) x > let pat_or = sepBy1 pat_cons (skip_op "|") |>> List.reduce (fun a b -> > PatOr(range_of_pattern a +. range_of_pattern b,a,b)) > let pat_as = pat_or .>>. (opt (skip_keyword SpecAs >>. pat_or )) |>> > function a, Some b -> PatAnd(range_of_pattern a +. range_of_pattern b,a,b) | a, > None -> a > pat_as s > and root_pattern_when d = (root_pattern .>>. (opt (skip_keyword SpecWhen >>. > root_term)) |>> function a, Some b -> PatWhen(range_of_pattern a +. > range_of_expr b,a,b) | a, None -> a) d > and root_pattern_var d = > let (+) = alt (indexBlockParsing d) > (pat_var + root_pattern_wildcard + root_pattern_dyn + root_pattern_rounds + > root_pattern_record + pat_array + pat_list + pat_exists) d > and root_pattern_pair d = pat_pair root_pattern_var d > and root_type_annot d = root_type {root_type_defaults with > allow_term=d.is_top_down=false; allow_wildcard=d.is_top_down} d > and root_type_record (flags : RootTypeFlags) d = > (rangeBlockParsing (curlies (sepBy ((rangeBlockParsing record_var .>> > skip_op ":") .>>. root_type flags) (optional (skip_op ";")))) > >>= fun (r,x) _ -> > x |> List.map fst |> duplicates DuplicateRecordTypeVar > |> function [[]] -> Ok(RawTRecord(r,x |> List.mapi (fun i ((_,n),x) -> > (i,n),x) |> Map.ofList)) | er -> Error er > ) d > and root_type_union (flags : RootTypeFlags) d = > let bar = bar (col d) > let vanilla = skip_op ":" >>. root_type flags |>> fun x -> Some (false, x) > let gadt = > skip_op "::" > >>. pipe2 (opt forall) (root_type flags) (Option.foldBack (List.foldBack > (fun a b -> RawTForall(range_of_typevar a +. range_of_texpr b,a,b)))) > |>> fun x -> Some (true, x) > > let body = vanilla <|> gadt <|>% None > (rangeBlockParsing (optional bar >>. sepBy1 (rangeBlockParsing > read_big_var_as_symbol .>>. body) bar) > >>= fun (r,x) _ -> > x |> List.map fst |> duplicates DuplicateUnionKey > |> function > | [[]] -> Ok(r,x |> List.mapi (fun i ((r,n),x) -> (i,n), match x > with Some x -> x | None -> false, RawTB r) |> Map.ofList) > | er -> Error er > ) d > and root_type (flags : RootTypeFlags) d = > let next = root_type flags > let cases d = > let wildcard d = if flags.allow_wildcard then (skip_keyword' > SpecWildcard |>> RawTWildcard) d else Error [[]] > // This metavar case only occurs in typecase during the bottom-up > segment. It should not be confused with metavars during top-down type inference. > let metavar d = if flags.allow_typecase_metavars then (skip_unary_op "~" > >>. read_var' |>> fun (a,b,r) -> r SemanticTokenLegend.type_variable; > RawTMetaVar(a,b)) d else Error [[]] > let term d = if flags.allow_term then (rangeBlockParsing (skip_unary_op > "`" >>. ((read_var'' |>> rawv) <|> rounds root_term)) |>> RawTTerm) {d with > is_top_down=false} else Error [[]] > let symbol = read_symbol |>> RawTSymbol > let record = root_type_record flags > let lit = (read_value |>> RawTLit) <|> (read_string |>> fun (a,b,c) -> > RawTLit(a +. c, LitString b)) > let lit_default = read_default_value' (bottom_up_number d.default_env >> > Result.map RawTLit) > let var = read_var' |>> fun (o,x,r) -> > r SemanticTokenLegend.type_variable > RawTVar(o, x) > let rounds = > rangeBlockParsing (rounds ((next |>> fun x _ -> x) <|>% RawTB)) > |>> fun (r,x) -> x r > let macro = > let read_macro_expression s = > (macro_expression MType (root_type root_type_defaults |>> fun x > -> RawMacroType(range_of_texpr x,x)) > <|> macro_expression MTypeLit (root_type root_type_defaults |>> > fun x -> RawMacroTypeLit(range_of_texpr x,x))) s > let body = many ((read_text false |>> RawMacroText) <|> > read_macro_type_var <|> read_macro_expression) > pipe3 skip_macro_open body skip_macro_close (fun a l b -> > RawTMacro(a +. b, l)) > let exists = rangeBlockParsing (exists .>>. root_type flags) |>> fun > (r,(l,b)) -> RawTExists(r,l,b) > let foralls = rangeBlockParsing (forall .>>. root_type flags) |>> (fun > (r,(l,b)) -> List.foldBack (fun a b -> RawTForall(range_of_typevar a +. > range_of_texpr b,a,b)) l b) > let (+) = alt (indexBlockParsing d) > (rounds + lit + lit_default + wildcard + term + metavar + var + record + > symbol + macro + exists + foralls) d > > let fold_applies a b = List.fold (fun a b -> RawTApply(range_of_texpr a +. > range_of_texpr b,a,b)) a b > let apply_tight d = pipe2 cases (many (expr_tight cases)) fold_applies d > let apply d = pipe2 apply_tight (many (indentBlockParsing (col d) (<) > apply_tight)) fold_applies d > > let pairs = sepBy1 apply (skip_op "*") |>> List.reduceBack (fun a b -> > RawTPair(range_of_texpr a +. range_of_texpr b,a,b)) > let functions = sepBy1 pairs (skip_op "->") |>> List.reduceBack (fun a b -> > RawTFun(range_of_texpr a +. range_of_texpr b,a,b,FT_Vanilla)) > > functions d > > and root_term d = > let rec expressions d = > let next = root_term > let case_var = read_var'' |>> rawv > let case_value = read_value |>> RawLit > let case_exists = > let sequence_type d = (many (indentBlockParsing (col d) (=) (sepBy1 > (root_type root_type_defaults) (skip_op ";"))) |>> List.concat) d > ((skip_keyword' SpecExists) .>>. (opt (squares sequence_type)) .>>. > next) > >>= fun ((r,type_vars),body) d -> > if d.is_top_down || Option.isSome type_vars > then Ok(RawExists(r +. range_of_expr body, (r, > type_vars), body)) > else Error [[r, TypeVarsNeedToBeExplicitForExists]] > let case_rounds = > rangeBlockParsing (rounds ((((read_op' |>> rawv) <|> next) |>> fun x > _ -> x) <|>% RawB)) > |>> fun (r,x) -> x r > let case_fun = > (skip_keyword SpecFun >>. many1 root_pattern_pair .>>. > (annotated_body "=>" next root_type_annot)) > >>= fun (pats, body) _ -> > match patterns_validate pats with > | [[]] -> List.foldBack (fun pat body -> RawFun(range_of_pattern > pat +. range_of_expr body,[[pat,body]])) pats body |> Ok > | ers -> Error ers > > let case_forall d = > if d.is_top_down then Error [[]] else > (tuple3 forall (many root_pattern_pair) (annotated_body "=>" > next root_type_annot) > >>= fun (foralls : TypeVar list, pats, body) _ -> > match patterns_validate pats with > | [[]] -> > List.foldBack (fun pat body -> RawFun(range_of_pattern > pat +. range_of_expr body,[[pat,body]])) pats body > |> List.foldBack (fun a body -> > RawForall(range_of_typevar a +. range_of_expr body,a,body)) foralls |> Ok > | ers -> Error ers) d > > let case_default_value = read_default_value RawDefaultLit RawLit > let case_if_then_else d = > let i = col d > let inline f' keyword = rangeBlockParsing (skip_keyword keyword >>. > next) > let inline f keyword = indentBlockParsing i (<=) (f' keyword) > (pipe4 (f' SpecIf) (f SpecThen) (many (f SpecElif .>>. f SpecThen)) > (opt (f SpecElse)) > (fun cond tr elifs fl -> > let f cond tr = function > | Some fl -> fst fl, RawIfThenElse(fst cond +. fst > fl,snd cond,snd tr,snd fl) > | None -> fst tr, RawIfThen(fst cond +. fst tr,snd > cond,snd tr) > let fl = List.foldBack (fun (cond,tr) fl -> f cond tr fl |> > Some) elifs fl > f cond tr fl |> snd)) d > > let case_match = > let clauses d = > let bar = bar (col d) > (optional bar >>. sepBy1 (root_pattern_when .>>. (skip_op "=>" > >>. next)) bar > >>= fun l _ -> > match l |> List.collect (fun (a,_) -> patterns_validate > [[a]]) with > | [[]] -> Ok l > | e -> Error e > ) d > > (rangeBlockParsing (skip_keyword SpecFunction >>. clauses) |>> > RawFun) > <|> (rangeBlockParsing ((skip_keyword SpecMatch >>. next .>> > skip_keyword SpecWith) .>>. clauses) |>> fun (a,(b,c)) -> RawMatch(a,b,c)) > > let case_typecase d = > let clauses d = > let bar = bar (col d) > let typecase = root_type {root_type_defaults with > allow_typecase_metavars=true; allow_wildcard=true} >>= typecase_validate > (optional bar >>. sepBy1 (typecase .>>. (skip_op "=>" >>. next)) > bar) d > > if d.is_top_down then Error [[]] else > (rangeBlockParsing ((skip_keyword SpecTypecase >>. root_type > {root_type_defaults with allow_term=true} .>> skip_keyword SpecWith) .>>. > clauses) > |>> fun (r, (a, b)) -> RawTypecase(r,a,b)) d > > let case_record = > let create = skip_op "=" >>. next > let modify = skip_op "#=" >>. next > let var = rangeBlockParsing record_var > let inject = skip_unary_op "$" >>. rangeBlockParsing read_small_var > let record_create_body = > (var .>>. opt create |>> function (a,Some b) -> > RawRecordWithSymbol(a,b) | (a,None) -> RawRecordWithSymbol(a,rawv a)) > <|> (inject .>>. create |>> RawRecordWithInjectVar) > let record_create = rangeBlockParsing (curlies (sepBy > record_create_body (optional (skip_op ";")))) |>> fun (r,withs) -> > (r,[[]],withs,[[]]) > let record_with_bodies = > (var >>= fun a -> > ((modify |>> fun b -> RawRecordWithSymbolModify(a,b)) > <|> (opt create |>> function Some b -> > RawRecordWithSymbol(a,b) | None -> RawRecordWithSymbol(a,rawv a)))) > <|> (inject >>= fun a -> > ((modify |>> fun b -> RawRecordWithInjectVarModify(a,b)) > <|> (create |>> fun b -> RawRecordWithInjectVar(a,b)))) > let record_without_bodies = (var |>> RawRecordWithoutSymbol) <|> > (inject |>> RawRecordWithoutInjectVar) > let record_with = > rangeBlockParsing > (curlies > (tuple4 read_small_var' > (many ((read_symbol |>> RawSymbol) <|> (skip_op "$" > >>. read_small_var' |>> rawv))) > ((skip_keyword SpecWith >>. sepBy record_with_bodies > (optional (skip_op ";"))) <|>% [[]]) > ((skip_keyword SpecWithout >>. many > record_without_bodies) <|>% [[]]))) > |>> fun (r,(name, acs, withs, withouts)) -> (r,rawv name :: > acs,withs,withouts) > > restore 2 record_create <|> record_with > >>= fun (_,_,withs,withouts as x) _ -> > [[ > withs |> List.choose (function RawRecordWithSymbol(a,_) | > RawRecordWithSymbolModify(a,_) -> Some a | _ -> None) |> duplicates > DuplicateTermRecordSymbol > withs |> List.choose (function RawRecordWithInjectVar(a,_) | > RawRecordWithInjectVarModify(a,_) -> Some a | _ -> None) |> duplicates > DuplicateTermRecordInjection > withouts |> List.choose (function RawRecordWithoutSymbol(a,b) -> > Some(a,b) | _ -> None) |> duplicates DuplicateTermRecordSymbol > withouts |> List.choose (function RawRecordWithoutInjectVar(a,b) > -> Some(a,b) | _ -> None) |> duplicates DuplicateTermRecordInjection > ]] |> List.concat |> function [[]] -> Ok(RawRecordWith x) | er > -> Error er > > let case_join_point = skip_keyword SpecJoin >>. next |>> join_point true > None > let case_join_point_backend = skip_keyword SpecJoinBackend >>. > (read_big_var_as_keyword .>>. next) |>> join_point_backend > let case_real = skip_keyword SpecReal >>. (fun d -> next {d with > is_top_down=false}) |>> fun x -> RawReal(range_of_expr x,x) > let case_symbol = read_symbol |>> RawSymbol > let case_list = rangeBlockParsing (squares sequence_body) >>= fun (r,l) > d -> > if d.is_top_down then > let r = fst r, fst r > List.foldBack (fun a b -> > RawApply(r,rawv(r,unintern "Cons"),RawPair(r,a,b)) > ) l (rawv(r,unintern "Nil")) |> Ok > else > Error [[r, ListLiteralsNotAllowedInBottomUp]] > > let case_string = read_string |>> fun (a, x, b) -> RawLit(a +. > b,LitString x) > > let case_macro = > let read_macro_expression s = > (macro_expression MTerm (root_term |>> fun x -> > RawMacroTerm(range_of_expr x,x)) > <|> macro_expression MType (root_type root_type_defaults |>> fun > x -> RawMacroType(range_of_texpr x,x)) > <|> macro_expression MTypeLit (root_type root_type_defaults |>> > fun x -> RawMacroTypeLit(range_of_texpr x,x))) s > let body = many ((read_text true |>> RawMacroText) <|> > read_macro_var <|> read_macro_expression) > pipe3 skip_macro_open body skip_macro_close (fun a l b -> RawMacro(a > +. b, l)) > > let (+) = alt (indexBlockParsing d) > > (case_value + case_default_value + case_var + case_join_point + > case_join_point_backend + case_real + case_symbol > + case_typecase + case_match + case_typecase + case_rounds + case_list + > case_record > + case_if_then_else + case_fun + case_forall + case_string + case_macro > + case_exists) d > > and application_tight d = > let next = expressions > pipe2 next (many (expr_tight next)) (List.fold (fun a b -> > RawApply(range_of_expr a +. range_of_expr b,a,b))) d > > and sequence_body d = (many (indentBlockParsing (col d) (=) (sepBy1 > operators (skip_op ";"))) |>> List.concat) d > and unary_op d = > let next = application_tight > let f = > read_unary_op' >>= fun (o,a) d -> > let type_expr d = > choice [[| > read_small_type_var' |>> RawTVar > read_value |>> RawTLit > read_string |>> fun (a,b,c) -> RawTLit(a +. c, LitString > b) > rounds (root_type {root_type_defaults with > allow_term=true}) > |]] d > let term_expr d = > choice [[| > read_var'' |>> rawv > read_value |>> RawLit > read_default_value RawDefaultLit RawLit > read_string |>> fun (a,b,c) -> RawLit(a +. c, LitString > b) > rounds root_term > |]] d > match a with > | ";" -> > if d.is_top_down then (rangeBlockParsing (squares > sequence_body) |>> fun (r,x) -> RawApply(o,RawV(o,unintern "array",true), > RawArray(o,x))) d > else Error [[o, ArrayLiteralsNotAllowedInBottomUp]] > | "!!!!" -> > (rangeBlockParsing (read_big_var .>>. (rounds (sepBy (fun d > -> unary_op {d with is_top_down=false}) (skip_op ",")))) > >>= fun (r,((ra,a), b)) _ -> > match string_to_op a with > | true, op' -> Ok(RawOp(r,op',b)) > | false, _ -> Error [[ra,InbuiltOpNotFound]]) d > | "`" -> if d.is_top_down then Error [[]] else > (rangeBlockParsing type_expr |>> RawType) d > | "`@" -> > if d.is_top_down then Error [[]] else > (rangeBlockParsing term_expr |>> fun (r,x) -> > let r' = o +. r > RawType(r', > RawTTerm(r',RawOp(r',LitToTypeLit,[[x]]))) > ) d > | "``" -> if d.is_top_down then Error [[]] else > (rangeBlockParsing type_expr |>> fun (r,x) -> RawOp(o +. > r,TypeToVar,[[RawType(r,x)]])) d > | "`$" -> (read_var'' |>> fun (r,x) -> RawV(r,x,false)) d > | _ -> (next |>> fun b -> RawApply(o +. range_of_expr b,rawv(o, > "~" + a),b)) d > (f <|> next) d > > and application (d: BlockParsingEnv) = > let next = unary_op > pipe2 next (many (indentBlockParsing (col d) (<) next)) (List.fold (fun > a b -> RawApply(range_of_expr a +. range_of_expr b,a,b))) d > > and operators d = > let term = application > let i = col d > let op = indentBlockParsing i (<=) op > > /// Pratt parser > let rec led left (prec,asoc,m) d = > match asoc with > | Associativity.Right -> (tdop (prec-1) |>> fun right -> m (left, > right)) d > | _ -> (tdop prec |>> fun right -> m (left, right)) d > > and tdop rbp d = > let rec loop left d = > ((op >>= fun (prec,_,_ as v) d -> > if rbp < prec then (led left v >>= loop) d > else skip' d -1; Error [[]]) <|>% left) d > (term >>= loop) d > > pipe2 (tdop System.Int32.MinValue) > (opt (indentBlockParsing i (<=) (skip_op ":" >>. root_type_annot))) > (fun a -> function Some b -> RawAnnot(range_of_expr a +. > range_of_texpr b,a,b) | _ -> a) > d > > let statements d = > let next = operators > let inl_or_let = > (inl_or_let root_term root_pattern_pair root_type_annot .>>. many > (and_inl_or_let root_term root_pattern_pair root_type_annot)) > >>= fun x _ -> > match x with > | ((r,name,body),false), [[]] -> Ok(fun on_succ -> > RawMatch(r,body,[[name,on_succ]])) > | ((_,_,_),false), l -> l |> List.map (fun ((r,_,_),_) -> r, > UnexpectedAndInlRec) |> Error > | x, xs -> > let l = x :: xs |> List.map (function > | (r,PatVar(o,name),body),true -> r, ((o,name), body) > | _ -> failwith "Compiler error: Recursive inl/let > statements should always have PatVar for names and should always be recursive." > ) > let r = l |> List.map fst |> List.reduce (+.) > l |> List.map (snd >> fst) > |> duplicates DuplicateRecFunctionName > |> function [[]] -> Ok(fun on_succ -> RawRecBlock(r, > List.map snd l, on_succ)) | er -> Error er > let module_open = module_openBlockParsing |>> fun (r,(name,acs)) on_succ > -> RawOpen(r,name,acs,on_succ) > let statement_parsers d = > let (+) = alt (indexBlockParsing d) > (inl_or_let + module_open) d > > let i = col d > let inline if_ x = indentBlockParsing i x > let stmts = > many1 (if_ (=) (rangeBlockParsing statement_parsers)) .>>. opt ((if_ > (<=) (skip_keyword SpecIn) >>. root_term) <|> if_ (=) next) > >>= fun (a,b) _ -> match b with Some b -> Ok(a,b) | None -> Error > [[List.last a |> fst, ExpectedExpression]] > let expr = if_ (=) next |>> fun x -> [[]],x > (many1 (stmts <|> expr) > |>> fun x -> > List.foldBack (fun (stmts,expr) s -> > let process_statements s = List.foldBack (fun (_,a) b -> a b) > stmts s > match s with > | ValueNone -> ValueSome (process_statements expr) > | ValueSome expr' -> ValueSome (process_statements > (RawSeq(range_of_expr expr +. range_of_expr expr',expr,expr'))) > ) x ValueNone |> ValueOption.get > ) d > > statements d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### comments > > ── fsharp ────────────────────────────────────────────────────────────────────── > let comments (s : BlockParsingEnv) = > let line_near_to = lineBlockParsing s > let rec loop line d = > if 0 <= line then > match s.comments.[[line]] with > | Some(r,text) -> > let text = text.TrimEnd() > loop (line-1) ((if text = "" then "\n" else text + " ") :: d) > | _ -> d > else d > loop (line_near_to-1) [[]] > |> String.concat "" > |> fun x -> Ok(x.TrimEnd()) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Comments > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Comments = string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TopStatement > > ── fsharp ────────────────────────────────────────────────────────────────────── > type [[<ReferenceEquality>]] TopStatement = > | TopAnd of VSCRange * TopStatement > | TopInl of Comments * VSCRange * (VSCRange * VarString) * RawExpr * > is_top_down: bool > | TopRecInl of Comments * VSCRange * (VSCRange * VarString) * RawExpr * > is_top_down: bool > | TopNominal of VSCRange * (VSCRange * VarString) * HoVar list * RawTExpr > | TopNominalRec of VSCRange * (VSCRange * VarString) * HoVar list * RawTExpr > | TopType of VSCRange * (VSCRange * VarString) * HoVar list * RawTExpr > | TopPrototype of Comments * VSCRange * (VSCRange * VarString) * (VSCRange * > VarString) * TypeVar list * RawTExpr > | TopInstance of VSCRange * (VSCRange * VarString) * (VSCRange * VarString) > * TypeVar list * RawExpr > | TopOpen of VSCRange * (VSCRange * VarString) * (VSCRange * SymbolString) > list > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_inl_or_let_process > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_inl_or_let_process comments is_top_down = function > | (r,PatVar(r',name),body),is_rec -> > let rec loop = function > | RawAnnot(r,body,t) -> loop body > | RawForall _ | RawFun _ -> > if is_rec then > Ok(TopRecInl(comments,r,(r',name),body,is_top_down)) > else Ok(TopInl(comments,r,(r',name),body,is_top_down)) > | _ -> Error [[r, ExpectedGlobalFunction]] > loop body > | (_,x,_),_ -> Error [[range_of_pattern x, > ExpectedVarOrOpAsNameOfGlobalStatement]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_inl_or_let > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_inl_or_let d = ((comments .>>. inl_or_let root_term root_pattern_pair > root_type_annot) >>= fun (comments,x) d -> top_inl_or_let_process comments > d.is_top_down x) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### process_union > > ── fsharp ────────────────────────────────────────────────────────────────────── > let process_union (r,(layout,n,a,(r',b))) _ = > let this = (RawTVar n,a) ||> List.fold (fun s x -> > RawTApply(r',s,RawTVar(r',hovar_name x))) > match layout with > | UHeap -> Ok(TopNominalRec(r,n,a,RawTUnion(r',b,layout,this))) > | UStack -> Ok(TopNominal(r,n,a,RawTUnion(r',b,layout,this))) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### union_clauses > > ── fsharp ────────────────────────────────────────────────────────────────────── > let union_clauses d = root_type_union root_type_defaults d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_union > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_union d = ((rangeBlockParsing (tuple4 (skip_keyword SpecUnion >>. > ((skip_keyword SpecRec >>% UHeap) <|>% UStack)) read_small_type_var' (many > ho_var .>> skip_op "=") union_clauses)) >>= process_union) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_nominal > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_nominal d = > (rangeBlockParsing (tuple3 (skip_keyword SpecNominal >>. > read_small_type_var') (many ho_var .>> skip_op "=") (root_type > {root_type_defaults with allow_term=true})) > |>> fun (r,(n,a,b)) -> TopNominal(r,n,a,b)) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### type_forall > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline type_forall next d = (pipe2 (forall <|>% [[]]) next (List.foldBack > (fun x s -> RawTForall(range_of_typevar x +. range_of_texpr s,x,s)))) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_prototype > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_prototype d = > (rangeBlockParsing > (tuple5 comments > (skip_keyword SpecPrototype >>. (read_small_var' <|> rounds > read_op')) read_small_type_var' (many forall_var) > (skip_op ":" >>. type_forall (root_type root_type_defaults))) > |>> fun (r,(com,a,b,c,d)) -> TopPrototype(com,r,a,b,c,d)) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_instance > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_instance d = > (rangeBlockParsing > (tuple4 (skip_keyword SpecInstance >>. (read_small_var' <|> rounds > read_op')) read_small_type_var' (many forall_var) (skip_op "=" >>. root_term)) > >>= fun (r,(prototype_name, nominal_name, nominal_foralls, body)) _ -> > Ok(TopInstance(r,prototype_name,nominal_name,nominal_foralls,body)) > ) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_type > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_type d = (rangeBlockParsing (tuple3 (skip_keyword SpecType >>. > read_small_type_var') (many ho_var) (skip_op "=" >>. root_type > root_type_defaults)) |>> fun (r,(a,b,c)) -> TopType(r,a,b,c)) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_and_inl_or_let > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_and_inl_or_let d = > (comments .>>. restore 1 (rangeBlockParsing (and_inl_or_let root_term > root_pattern_pair root_type_annot)) > >>= fun (comments,(r,x)) d -> top_inl_or_let_process comments d.is_top_down > x |> Result.map (fun x -> TopAnd(r,x))) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_and > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline top_and f = restore 1 (rangeBlockParsing (skip_keyword SpecAnd >>. > f)) |>> TopAnd > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_and_union > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_and_union d = top_and ((rangeBlockParsing (tuple4 (skip_keyword > SpecUnion >>% UHeap) read_small_type_var' (many ho_var .>> skip_op "=") > union_clauses)) >>= process_union) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_open > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_open d = (module_openBlockParsing |>> fun (r,(name,acs)) -> > TopOpen(r,name,acs)) d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_statement > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_statement s = > let (+) = alt (indexBlockParsing s) > (top_inl_or_let + top_union + top_nominal + top_prototype + top_type + > top_instance + top_and_inl_or_let + top_and_union + top_open) s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ParserErrorsList > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ParserErrorsList = (VSCRange * ParserErrors) list > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ParseResult > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ParseResult = Result<TopStatement,ParserErrorsList> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### parseBlockParsing > > ── fsharp ────────────────────────────────────────────────────────────────────── > let parseBlockParsing (s : BlockParsingEnv) : ParseResult = > if 0 < s.tokens.Length then > match top_statement s with > | Ok _ as x -> if s.Index = s.tokens.Length then x else Error [[fst > s.tokens.[[s.Index]], ExpectedEob]] > | Error [[]] -> > if s.Index = s.tokens.Length then Error [[fst (Array.last s.tokens), > UnexpectedEob]] > else Error [[fst s.tokens.[[s.Index]], ExpectedEob]] > | Error _ as l -> l > else > Error [[]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_parser_error > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_parser_error = function > | TypeVarsNeedToBeExplicitForExists -> "The type vars for the exists body > have to be specified up front in the bottom-up segment." > | DuplicateExistsVar -> "Duplicate variable in the exists type." > | ExistsNotAllowedInTypecase -> "The existential type is not allowed in > typecase." > | ForallNotAllowedInTypecase -> "The type lambda is not allowed in > typecase." > | MetavarShadowedByVar -> "The metavariable is shadowed by a variable." > | VarShadowedByMetavar -> "The variable is shadowed by a metavariable." > | ExpectedPairedSymbolInUnion -> "The union clause should be pair whose left > side is a symbol." > | ExpectedEscapedChar false -> "escaped character" > | ExpectedEscapedChar true -> "escaped character or the escaped variable > (\\v)" > | ExpectedUnescapedChar -> "unescaped character" > | ExpectedMacroVar -> "variable" > | ExpectedMacroTypeVar -> "type variable" > | ExpectedMacroTypeLitVar -> "type literal variable" > | ExpectedText -> "text" > | ExpectedMacroOpen -> "$\"" > | ExpectedStringOpen -> "\"" > | ExpectedMacroClose | ExpectedStringClose -> "\"" > | ExpectedKeyword x -> > match x with > | SpecExists -> "exists" > | SpecIn -> "in" > | SpecAnd -> "and" > | SpecFun -> "fun" > | SpecMatch -> "match" > | SpecTypecase -> "typecase" > | SpecFunction -> "function" > | SpecWith -> "with" > | SpecWithout -> "without" > | SpecAs -> "as" > | SpecWhen -> "when" > | SpecInl -> "inl" > | SpecLet -> "let" > | SpecForall -> "forall" > | SpecInm -> "inm" > | SpecInb -> "inb" > | SpecRec -> "rec" > | SpecIf -> "if" > | SpecThen -> "then" > | SpecElif -> "elif" > | SpecElse -> "else" > | SpecJoin -> "join" > | SpecJoinBackend -> "join_backend" > | SpecType -> "type" > | SpecNominal -> "nominal" > | SpecReal -> "real" > | SpecUnion -> "union" > | SpecOpen -> "open" > | SpecWildcard -> "_" > | SpecInstance -> "instance" > | SpecPrototype -> "prototype" > | ExpectedParenthesis(Round,Open) -> "(" > | ExpectedParenthesis(Curly,Open) -> "{" > | ExpectedParenthesis(Square,Open) -> "[[" > | ExpectedParenthesis(Round,Close) -> ")" > | ExpectedParenthesis(Curly,Close) -> "}" > | ExpectedParenthesis(Square,Close) -> "]]" > | ExpectedMacroExpression(MTerm,Open) -> "`(" > | ExpectedMacroExpression(MType,Open) -> "!(" > | ExpectedMacroExpression(MTypeLit,Open) -> "@(" > | ExpectedMacroExpression(MTerm,Close) -> ")" > | ExpectedMacroExpression(MType,Close) -> ")" > | ExpectedMacroExpression(MTypeLit,Close) -> ")" > | ExpectedOpenParenthesis -> "(, { or [[" > | ExpectedOperator' -> "operator" > | ExpectedOperator x -> x > | ExpectedUnaryOperator' -> "unary operator" > | ExpectedUnaryOperator x -> x > | ExpectedUnit -> "()" > | ExpectedSmallVar -> "lowercase variable" > | ExpectedBigVar -> "uppercase variable" > | ExpectedVar -> "variable" > | ExpectedLit -> "literal" > | ExpectedSymbol -> "symbol" > | ExpectedSymbolPaired -> "paired symbol" > | ExpectedStatement -> "statement" > | ExpectedFunctionAsBodyOfRecStatement -> "Rec statements should all return > functions known at parse time." > | ExpectedGlobalFunction -> "Global inl/let statements should all return > functions known at parse time." > | ExpectedSinglePatternWhenStatementNameIsNorVarOrOp -> "Unexpected > pattern." > | ExpectedVarOrOpAsNameOfGlobalStatement -> "The first pattern of a global > statement should either be a variable or compile down to it." > | ExpectedVarOrOpAsNameOfRecStatement -> "The first pattern of a recursive > statement should either be a variable or compile down to it." > | ExpectedExpression -> "A sequence of statements should end in an > expression." > | InbuiltOpNotFound -> "Not found among the inbuilt operations." > | UnknownOperator -> "Operator does not have known precedence and > associativity." > | ForallNotAllowed -> "Forall not allowed here." > | InvalidPattern DisjointOrPatternVar -> "Both branches of an or pattern > need to have the same variables. This one is disjoint." > | InvalidPattern DuplicateTermVar -> "Duplicate term variable in pattern." > | InvalidPattern DuplicateTypeVar -> "Duplicate type variable in pattern." > | InvalidPattern ShadowedVar -> "Shadowed pattern variable." > | MetavarNotAllowed -> "Metavariable is not allowed here." > | SymbolPairedShouldStartWithUppercaseInTypeScope -> "Paired symbol should > start with uppercase in type scope." > | TermNotAllowed -> "The term is not allowed here." > | TypecaseNotAllowed -> "Typecase is not allowed here." > | UnexpectedAndInlRec -> "The first statement of a recursive block has to be > marked as recursive." > | ExpectedEob -> "Failed to parse this token." > | UnexpectedEob -> "Unexpected end of block past this token." > | UnknownError -> "Compiler error: Parsing failed at this position with no > error message and without consuming all the tokens in a block." > | DuplicateRecordTypeVar -> "Duplicate record type variable." > | DuplicateForallVar -> "Duplicate forall variable." > | DuplicateConstraint -> "Duplicate constraint." > | InvalidPattern DuplicateRecordSymbol > | DuplicateTermRecordSymbol -> "Duplicate record symbol." > | InvalidPattern DuplicateRecordInjection > | DuplicateTermRecordInjection -> "Duplicate record injection." > | DuplicateRecFunctionName -> "Shadowing of functions by the members of the > same mutually recursive block is not allowed." > | BottomUpNumberParseError (x, val_dsc) -> sprintf "The string %s cannot be > safely parsed as %s." x val_dsc > | DuplicateUnionKey -> "Duplicate union keys are not allowed." > | ListLiteralsNotAllowedInBottomUp -> "List literals are not allowed in the > bottom-up segment." > | ArrayLiteralsNotAllowedInBottomUp -> "Array literals are not allowed in > the bottom-up segment." > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## HopacInfixes > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.dll" > #r > @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.Core > .dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Hopac > open Hopac.Infixes > > let (>>**) x f = > if x |> Hopac.Promise.Now.isFulfilled > then x |> Hopac.Promise.Now.get |> f > else Hopac.Infixes.(>>=*) x f > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## BlockBundling > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Hopac.Extensions > open Hopac.Stream > > // open FSharpx.Collections > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Bundle > > ── fsharp ────────────────────────────────────────────────────────────────────── > // These bundles are top statements that have their range offsets distributed > into them. > type [[<ReferenceEquality>]] Bundle = > | BundleType of VSCRange * (VSCRange * VarString) * HoVar list * RawTExpr > | BundleNominal of VSCRange * (VSCRange * VarString) * HoVar list * RawTExpr > | BundleNominalRec of (VSCRange * (VSCRange * VarString) * HoVar list * > RawTExpr) list > | BundleInl of Comments * VSCRange * (VSCRange * VarString) * RawExpr * > is_top_down: bool > | BundleRecInl of (Comments * VSCRange * (VSCRange * VarString) * RawExpr) > list * is_top_down: bool > | BundlePrototype of Comments * VSCRange * (VSCRange * VarString) * > (VSCRange * VarString) * TypeVar list * RawTExpr > | BundleInstance of VSCRange * (VSCRange * VarString) * (VSCRange * > VarString) * TypeVar list * RawExpr > | BundleOpen of VSCRange * (VSCRange * VarString) * (VSCRange * > SymbolString) list > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### bundle_range > > ── fsharp ────────────────────────────────────────────────────────────────────── > let bundle_range = function > | BundleType(r,_,_,_) | BundleNominal(r,_,_,_) | BundleInl(_,r,_,_,_) > | BundlePrototype(_,r,_,_,_,_) | BundleInstance(r,_,_,_,_) | > BundleOpen(r,_,_) -> r > | BundleNominalRec l -> List.head l |> fun (r,_,_,_) -> r > | BundleRecInl(l,_) -> List.head l |> fun (_,r,_,_) -> r > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_offset > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_offset offset (range : VSCRange) : VSCRange = > let f (a : VSCPos) = {|a with line=offset + a.line|} > let a,b = range > f a, f b > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_offset_hovar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_offset_hovar offset (a,b) = add_offset offset a, b > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_offset_hovar_list > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_offset_hovar_list offset x = List.map (add_offset_hovar offset) x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_offset_typevar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_offset_typevar offset ((a,b),c) = (add_offset offset a, b), > add_offset_hovar_list offset c > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_offset_typevar_list > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_offset_typevar_list offset x = List.map (add_offset_typevar offset) x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### fold_offset_ty > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec fold_offset_ty offset x = > let f = fold_offset_ty offset > let g = add_offset offset > match x with > | RawTWildcard r -> RawTWildcard(g r) > | RawTLit(r,a) -> RawTLit(g r, a) > | RawTB r -> RawTB(g r) > | RawTMetaVar(r,a) -> RawTMetaVar(g r,a) > | RawTVar(r,a) -> RawTVar(g r,a) > | RawTArray(r,a) -> RawTArray(g r,f a) > | RawTPair(r,a,b) -> RawTPair(g r,f a,f b) > | RawTFun(r,a,b,t) -> RawTFun(g r,f a,f b,t) > | RawTRecord(r,a) -> RawTRecord(g r,Map.map (fun _ -> f) a) > | RawTUnion(r,a,b,c) -> RawTUnion(g r,Map.map (fun _ (is_gadt,body) -> > is_gadt, f body) a,b,f c) > | RawTTypecase(r,a,b) -> RawTTypecase(g r,f a,List.map (fun (a,b) -> f a, f > b) b) > | RawTSymbol(r,a) -> RawTSymbol(g r,a) > | RawTApply(r,a,b) -> RawTApply(g r,f a,f b) > | RawTForall(r,a,b) -> RawTForall(g r,add_offset_typevar offset a,f b) > | RawTExists(r,a,b) -> RawTExists(g r,add_offset_typevar_list offset a,f b) > | RawTPrim(r,a) -> RawTPrim(g r,a) > | RawTTerm(r,a) -> RawTTerm(g r,fold_offset_term offset a) > | RawTMacro(r,a) -> RawTMacro(g r,fold_offset_macro offset a) > | RawTFilledNominal(r,a) -> RawTFilledNominal(g r,a) > | RawTLayout(r,a,b) -> RawTLayout(g r,f a,b) > and fold_offset_macro offset a = > let g = add_offset offset > List.map (function > | RawMacroText(r,a) -> RawMacroText(g r,a) > | RawMacroTerm(r,a) -> RawMacroTerm(g r,fold_offset_term offset a) > | RawMacroType(r,a) -> RawMacroType(g r,fold_offset_ty offset a) > | RawMacroTypeLit(r,a) -> RawMacroTypeLit(g r,fold_offset_ty offset a) > ) a > and fold_offset_term offset x = > let f = fold_offset_term offset > let ty = fold_offset_ty offset > let g = add_offset offset > match x with > | RawB r -> RawB (g r) > | RawV(r,a,b) -> RawV (g r,a,b) > | RawLit(r,a) -> RawLit (g r,a) > | RawDefaultLit(r,a) -> RawDefaultLit (g r,a) > | RawSymbol(r,a) -> RawSymbol (g r,a) > | RawType(r,a) -> RawType(g r, ty a) > | RawMatch(r,a,b) -> RawMatch(g r,f a,List.map (fun (a,b) -> > fold_offset_pattern offset a,f b) b) > | RawFun(r,a) -> RawFun(g r,List.map (fun (a,b) -> fold_offset_pattern > offset a,f b) a) > | RawForall(r,a,b) -> RawForall(g r,add_offset_typevar offset a,f b) > | RawExists(r,(r',a),b) -> RawExists(g r,(g r',Option.map (List.map ty) a),f > b) > | RawFilledForall(r,a,b) -> RawFilledForall(g r,a,f b) > | RawRecBlock(r,a,b) -> RawRecBlock(g r,List.map (fun ((r,a),b) -> (g r,a),f > b) a,f b) > | RawRecordWith(r,a,b,c) -> > let b = > b |> List.map (function > | RawRecordWithSymbol((r,a),b) -> RawRecordWithSymbol((g r,a),f > b) > | RawRecordWithSymbolModify((r,a),b) -> > RawRecordWithSymbolModify((g r,a),f b) > | RawRecordWithInjectVar((r,a),b) -> RawRecordWithInjectVar((g > r,a),f b) > | RawRecordWithInjectVarModify((r,a),b) -> > RawRecordWithInjectVarModify((g r,a),f b) > ) > let c = > c |> List.map (function > | RawRecordWithoutSymbol(r,a) -> RawRecordWithoutSymbol(g r,a) > | RawRecordWithoutInjectVar(r,a) -> RawRecordWithoutInjectVar(g > r,a) > ) > RawRecordWith(g r, List.map f a,b,c) > | RawOp(r,a,b) -> RawOp(g r,a,List.map f b) > | RawJoinPoint(r,q,a,b) -> RawJoinPoint(g r,Option.map (fun (r',w) -> g > r',w) q,f a,b) > | RawAnnot(r,a,b) -> RawAnnot(g r,f a,ty b) > | RawTypecase(r,a,b) -> RawTypecase(g r,ty a,List.map (fun (a,b) -> ty a,f > b) b) > | RawOpen(r,a,b,c) -> RawOpen(g r,add_offset_hovar offset > a,add_offset_hovar_list offset b,f c) > | RawApply(r,a,b) -> RawApply(g r,f a,f b) > | RawIfThenElse(r,a,b,c) -> RawIfThenElse(g r,f a,f b,f c) > | RawIfThen(r,a,b) -> RawIfThen(g r,f a,f b) > | RawPair(r,a,b) -> RawPair(g r,f a,f b) > | RawSeq(r,a,b) -> RawSeq(g r,f a,f b) > | RawHeapMutableSet(r,a,b,c) -> RawHeapMutableSet(g r,f a,List.map f b,f c) > | RawReal(r,a) -> RawReal(g r,f a) > | RawMissingBody r -> RawMissingBody(g r) > | RawMacro(r,a) -> RawMacro(g r,fold_offset_macro offset a) > | RawArray(r,a) -> RawArray(g r,List.map f a) > and fold_offset_pattern offset x = > let f = fold_offset_pattern offset > let term = fold_offset_term offset > let ty = fold_offset_ty offset > let g = add_offset offset > let g' x = add_offset_hovar offset x > match x with > | PatFilledDefaultValue _ -> failwith "Compiler error: Later stages only." > | PatB r -> PatB(g r) > | PatE r -> PatE(g r) > | PatVar(r,a) -> PatVar(g r,a) > | PatDyn(r,a) -> PatDyn(g r,f a) > | PatUnbox(r,q,a) -> PatUnbox(g r,q,f a) > | PatAnnot(r,a,b) -> PatAnnot(g r,f a,ty b) > | PatPair(r,a,b) -> PatPair(g r,f a,f b) > | PatSymbol(r,a) -> PatSymbol(g r,a) > | PatRecordMembers(r,a) -> > let a = a |> List.map (function > | PatRecordMembersSymbol((r,a),b) -> PatRecordMembersSymbol((g > r,a),f b) > | PatRecordMembersInjectVar((r,a),b) -> PatRecordMembersInjectVar((g > r,a),f b) > ) > PatRecordMembers(g r,a) > | PatOr(r,a,b) -> PatOr(g r,f a,f b) > | PatAnd(r,a,b) -> PatAnd(g r,f a,f b) > | PatValue(r,a) -> PatValue(g r,a) > | PatDefaultValue(r,a) -> PatDefaultValue(g r,a) > | PatWhen(r,a,b) -> PatWhen(g r,f a,term b) > | PatNominal(r,a,b,c) -> PatNominal(g r,g' a,List.map g' b,f c) > | PatExists(r,a,b) -> PatExists(g r,List.map g' a,f b) > | PatArray(r,a) -> PatArray(g r,List.map f a) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### bundle_blocks > > ── fsharp ────────────────────────────────────────────────────────────────────── > let bundle_blocks (blocks : TopStatement Block list) = > match blocks with > | [[]] -> None > | {block=TopAnd _} :: x' -> failwith "Compiler error: TopAnd should be > eliminated during the first bundling step." > | {block=TopRecInl _} :: _ as l -> > l |> List.mapFold (fun _ -> function > | {offset=i; block=TopRecInl(com,r,a,b,c)} -> (com, add_offset i r, > add_offset_hovar i a, fold_offset_term i b), c > | _ -> failwith "Compiler error: Recursive inl statements can only > be followed by statements of the same type." > ) true > |> BundleRecInl |> Some > | {block=TopNominalRec _} :: _ as l -> > l |> List.map (function > | {offset=i; block=TopNominalRec(r,a,b,c)} -> (add_offset i r, > add_offset_hovar i a, add_offset_hovar_list i b, fold_offset_ty i c) > | _ -> failwith "Compiler error: Recursive type statements can only > be followed by statements of the same type." > ) > |> BundleNominalRec |> Some > | [[{offset=i; block=TopInl(com,r,a,b,c)}]] -> BundleInl(com, add_offset i > r, add_offset_hovar i a, fold_offset_term i b, c) |> Some > | [[{offset=i; block=TopPrototype(com,r,a,b,c,d)}]] -> > BundlePrototype(com,add_offset i r, add_offset_hovar i a, add_offset_hovar i b, > add_offset_typevar_list i c, fold_offset_ty i d) |> Some > | [[{offset=i; block=TopNominal(r,a,b,c)}]] -> BundleNominal(add_offset i r, > add_offset_hovar i a, add_offset_hovar_list i b, fold_offset_ty i c) |> Some > | [[{offset=i; block=TopType(r,a,b,c)}]] -> BundleType(add_offset i r, > add_offset_hovar i a, add_offset_hovar_list i b, fold_offset_ty i c) |> Some > | [[{offset=i; block=TopInstance(r,a,b,c,d)}]] -> BundleInstance(add_offset > i r, add_offset_hovar i a, add_offset_hovar i b, add_offset_typevar_list i c, > fold_offset_term i d) |> Some > | [[{offset=i; block=TopOpen(r,a,b)}]] -> BundleOpen(add_offset i r, > add_offset_hovar i a, add_offset_hovar_list i b) |> Some > | {block=TopInl _ | TopPrototype _ | TopNominal _ | TopType _ | TopInstance > _ | TopOpen _} :: _ -> failwith "Compiler error: Regular top level statements > should be singleton bundles." > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_line_to_range > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_line_to_range line ((a,b) : VSCRange) = {|a with line=line+a.line|}, {|b > with line=line+b.line|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### process_error > > ── fsharp ────────────────────────────────────────────────────────────────────── > let process_error v = > let messages, expecteds = v |> List.distinct |> List.partition (fun x -> > System.Char.IsUpper(x,0)) > let ex () = match expecteds with [[x]] -> sprintf "Expected: %s" x | x -> > sprintf "Expected one of: %s" (String.concat ", " x) > let f l = String.concat "\n" l > if List.isEmpty expecteds then f messages > elif List.isEmpty messages then ex () > else f (ex () :: "" :: "Other error messages:" :: messages) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_block_parsing_error > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_block_parsing_error line (l : ParserErrorsList) : RString list = > l |> List.groupBy fst > |> List.map (fun (k,v) -> > let k = add_line_to_range line k > let v = List.map (snd >> show_parser_error) v > k, process_error v > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ParsedBlock > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ParsedBlock = {result : ParseResult; semantic_tokens : LineTokens} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ParserState > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ParserState = { > is_top_down : bool > blocks : (LineTokens * ParsedBlock Promise Block) list > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### BlockBundleValue > > ── fsharp ────────────────────────────────────────────────────────────────────── > type BlockBundleValue = {bundle : Bundle option; errors : RString list} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### BlockBundleState > > ── fsharp ────────────────────────────────────────────────────────────────────── > type BlockBundleState = (TopStatement Block list * BlockBundleValue) Stream > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### BlockBundleStateInner > > ── fsharp ────────────────────────────────────────────────────────────────────── > type BlockBundleStateInner = {errors : RString list; tmp : TopStatement Block > list; state : BlockBundleState} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_block_bundle_init > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_block_bundle_init : BlockBundleState = Promise.Now.never() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_block_bundle > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// Bundles the blocks with the `and` statements. Also collects the parser > errors. > /// Does diffing to ref preserve the bundles. > let wdiff_block_bundle (state : BlockBundleState) (l : ParserState) : > BlockBundleState = > let (+.) a b = add_line_to_range a b > > let empty = {state=wdiff_block_bundle_init; tmp=[[]]; errors=[[]]} > let move_temp (s : BlockBundleStateInner) next = > let o' = List.rev s.tmp > let fl () = (o',{bundle=bundle_blocks o'; errors=Seq.toList s.errors}), > next empty > if Promise.Now.isFulfilled s.state then > match Promise.Now.get s.state with > | Cons((o,q),xs) when o = o' -> (o,{bundle=q.bundle; > errors=Seq.toList s.errors}), next {state=xs; tmp=[[]]; errors=[[]]} > | _ -> fl () > else fl () > |> Cons |> Promise.Now.withValue > > let inline iter (s : BlockBundleStateInner) l f = > match l with > | (_,x) :: x' -> let offset = x.offset in x.block >>** fun {result=a} -> > f (offset,a,x') > | [[]] -> move_temp s (fun _ -> Promise.Now.withValue Nil) > let rec init (s : BlockBundleStateInner) l = iter s l <| fun (offset,x,x') > -> > match x with > | Ok (TopAnd(r,_)) -> init {s with errors = (offset +. r, "Invalid `and` > statement.") :: s.errors} x' > | Ok (TopRecInl _ as a) -> recinl {s with tmp = {offset=offset; block=a} > :: s.tmp} x' > | Ok (TopNominalRec _ as a) -> rectype {s with tmp = {offset=offset; > block=a} :: s.tmp} x' > | Ok a -> move_temp {s with tmp = {offset=offset; block=a} :: s.tmp} > (fun s -> init s x') > | Error er -> init {s with errors = List.append > (show_block_parsing_error offset er) s.errors} x' > and recinl (s : BlockBundleStateInner) l = iter s l <| fun (offset,x,x') -> > match x with > | Ok (TopAnd(_, TopRecInl _ & a)) -> recinl {s with tmp = > {offset=offset; block=a} :: s.tmp} x' > | Ok (TopAnd(r, _)) -> recinl {s with errors = (offset +. r, "inl/let > recursive statements can only be followed by `and` inl/let statements.") :: > s.errors} x' > | Ok _ -> move_temp s (fun s -> init s l) > | Error er -> recinl {s with errors = List.append > (show_block_parsing_error offset er) s.errors} x' > and rectype (s : BlockBundleStateInner) l = iter s l <| fun (offset,x,x') -> match x with > | Ok (TopAnd(_, TopNominalRec _ & a)) -> rectype {s with tmp = > {offset=offset; block=a} :: s.tmp} x' > | Ok (TopAnd(r, _)) -> rectype {s with errors = (offset +. r, "`union > rec` can only be followed by `and union`.") :: s.errors} x' > | Ok _ -> move_temp s (fun s -> init s l) > | Error er -> rectype {s with errors = List.append > (show_block_parsing_error offset er) s.errors} x' > > init {empty with state=state} l.blocks > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### semantic_tokens > > ── fsharp ────────────────────────────────────────────────────────────────────── > let semantic_tokens (l : ParserState) = > let rec loop s = function > | (_,x) :: xs -> x.block >>= fun x -> loop > (FSharpx.Collections.PersistentVector.append s x.semantic_tokens) xs > | [[]] -> Job.result s > loop FSharpx.Collections.PersistentVector.empty l.blocks > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## Infer > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### 'a ref' > > ── fsharp ────────────────────────────────────────────────────────────────────── > type [[<ReferenceEquality>]] 'a ref' = {mutable contents' : 'a} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TT > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TT = > | KindType > | KindFun of TT * TT > | KindMetavar of TT option ref' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Constraint > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Constraint = > | CUInt > | CSInt > | CInt > | CFloat > | CNumber > | CPrim > | CSymbol > | CRecord > | CPrototype of GlobalId > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ConstraintOrModule > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ConstraintOrModule = C of Constraint | M of Map<string,ConstraintOrModule> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Var > > ── fsharp ────────────────────────────────────────────────────────────────────── > type [[<ReferenceEquality>]] Var = { > scope : int > constraints : Constraint Set // Must be stated up front and needs to be > static in forall vars > kind : TT // Is not supposed to have metavars. > name : string // Is what gets printed. > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### MVar > > ── fsharp ────────────────────────────────────────────────────────────────────── > type [[<ReferenceEquality>]] MVar = { > mutable scope : int > mutable constraints : Constraint Set // Must be stated up front and needs to > be static in forall vars > kind : TT // Has metavars, and so is mutable. > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TM > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TM = > | TMText of string > | TMVar of T > | TMLitVar of T > and T = > | TyB > | TyLit of Literal > | TyPrim of PrimitiveType > | TySymbol of string > | TyPair of T * T > | TyRecord of Map<int * string, T> > | TyModule of Map<string, T> > | TyComment of Comments * T > | TyFun of T * T * FunType > | TyArray of T > | TyNominal of GlobalId > | TyUnion of Map<int * string,bool * T> * UnionLayout // The boolean arg > determines whether the union case is generalized. > | TyApply of T * T * TT // Regular type functions (TyInl) get reduced, while > this represents the staged reduction of nominals. > | TyInl of Var * T > | TyForall of Var * T > | TyExists of Var list * T > | TyMetavar of MVar * T option ref > | TyVar of Var * T option ref > | TyMacro of TM list > | TyLayout of T * Layout > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### tyvar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let tyvar x = TyVar(x, ref None) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TypeError > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TypeError = > | KindError of TT * TT > | KindErrorInConstraint of TT * TT > | ExpectedSymbolAsRecordKey of T > | ExpectedSymbolAsModuleKey of T > | UnboundVariable of string > | UnboundModule > | ModuleIndexFailedInOpen > | ModuleIndexWouldShadowLocalVars of string [[]] > | TermError of T * T > | TypeVarScopeError of string * T * T > | RecursiveMetavarsNotAllowed of T * T > | RecursiveTypevarsNotAllowed of T * T > | ForallVarConstraintError of string * Constraint Set * Constraint Set > | MetavarsNotAllowedInRecordWith > | ExpectedRecord of T > | ExpectedExistentialInTerm of T > | ExpectedExistentialInPattern of T > | UnexpectedNumberOfArgumentsInExistsPattern of got: int * expected: int > | UnexpectedNumberOfArgumentsInExistsBody of got: int * expected: int > | ExistsShouldntHaveMetavars of T list > | ExpectedRecordInsideALayout of T > | UnionsCannotBeApplied > | ExpectedNominalInApply of T > | MalformedNominal > | LayoutSetMustBeAnnotated > | ExpectedMutableLayout of T > | ExpectedRecordAsResultOfIndex of T > | RecordIndexFailed of string > | ModuleIndexFailed of string > | ExpectedModule of T > | ExpectedSymbol' of T > | ExpectedSymbolInRecordWith of T > | RealFunctionInTopDown > | ModuleMustBeImmediatelyApplied > | MissingRecordFieldsInPattern of T * string list > | CasePatternNotFoundForType of GlobalId * string > | CasePatternNotFound of string > | CannotInferCasePatternFromTermInEnv of T > | NominalInPatternUnbox of GlobalId > | TypeInEnvIsNotNominal of T > | UnionInPatternNominal of GlobalId > | ConstraintError of Constraint * T > | PrototypeConstraintCannotPropagateToMetavar of GlobalId * T > | PrototypeConstraintCannotPropagateToVar of GlobalId * T > | ExpectedAnnotation > | ExpectedSinglePattern > | RecursiveAnnotationHasMetavars of T > | ValueRestriction of T > | DuplicateRecInlName > | DuplicateKeyInRecUnion > | ExpectedConstraintInsteadOfModule > | InstanceNotFound of prototype: GlobalId * instance: GlobalId > | ExpectedPrototypeConstraint of Constraint > | ExpectedPrototypeInsteadOfModule > | ExpectedHigherOrder of T > | InstanceArityError of prototype_arity: int * instance_arity: int > | InstanceCoreVarsShouldMatchTheArityDifference of got: int * expected: int > | InstanceKindError of TT * TT > | KindNotAllowedInInstanceForall > | InstanceVarShouldNotMatchAnyOfPrototypes > | MissingBody > | MacroIsMissingAnnotation > | ArrayIsMissingAnnotation > | ExistsIsMissingAnnotation > | ShadowedForall > | ShadowedExists > | UnionTypesMustHaveTheSameLayout > | OrphanInstance > | ShadowedInstance > | UnusedTypeVariable of string list > | CompilerError of string > | IncorrectGADTConstructorType > | IncorrectRecursiveNominal > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### shorten'<'a> > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline shorten'<'a> (x : 'a) link next = > let x' : 'a = next x > if System.Object.ReferenceEquals(x,x') = false then link.contents' <- Some > x' > x' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### visit_tt > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec visit_tt = function > | KindMetavar({contents'=Some x} & link) -> shorten' x link visit_tt > | a -> a > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### shorten<'a> > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline shorten<'a> (x : 'a) (link : ref<option<'a>>) next = > let x' : 'a = next x > if System.Object.ReferenceEquals(x,x') = false then link.Value <- Some x' > x' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### visit_t_mvar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec visit_t_mvar = function > | TyComment(_,a) -> visit_t_mvar a > | TyMetavar(_,{contents=Some x} & link) -> shorten x link visit_t_mvar > | a -> a > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### visit_t > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec visit_t x = > match visit_t_mvar x with > | TyVar(_,{contents=Some x}) -> visit_t x > | x -> x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### InferTypeErrorException > > ── fsharp ────────────────────────────────────────────────────────────────────── > exception InferTypeErrorException of (VSCRange * TypeError) list > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### metavars > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec metavars = function > | RawTTypecase _ | RawTExists _ | RawTFilledNominal _ | RawTMacro _ | > RawTVar _ | RawTTerm _ > | RawTPrim _ | RawTWildcard _ | RawTLit _ | RawTB _ | RawTSymbol _ -> > Set.empty > | RawTMetaVar(_,a) -> Set.singleton a > | RawTArray(_,a) | RawTLayout(_,a,_) | RawTForall(_,_,a) -> metavars a > | RawTPair(_,a,b) | RawTApply(_,a,b) | RawTFun(_,a,b,_) -> metavars a + > metavars b > | RawTUnion(_,l,_,this) -> Map.fold (fun s _ (_,v) -> s + metavars v) > (metavars this) l > | RawTRecord(_,l) -> Map.fold (fun s _ v -> s + metavars v) Set.empty l > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TopEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TopEnv = { > nominals_next_tag : int > nominals_aux : Map<GlobalId, {|name : string; kind : TT|}> > nominals : Map<GlobalId, {|vars : Var list; body : T|}> > prototypes_next_tag : int > prototypes_instances : Map<GlobalId * GlobalId, Constraint Set list> > prototypes : Map<GlobalId, {|name : string; signature: T; kind : TT|}> > ty : Map<string,T> > term : Map<string,T> > constraints : Map<string,ConstraintOrModule> > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_env_emptyInfer > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_env_emptyInfer = { > nominals_next_tag = 0 > nominals_aux = Map.empty > nominals = Map.empty > prototypes_next_tag = 0 > prototypes_instances = Map.empty > prototypes = Map.empty > ty = Map.empty > term = Map.empty > constraints = Map.empty > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### unionInfer > > ── fsharp ────────────────────────────────────────────────────────────────────── > let unionInfer small big = { > nominals_next_tag = max small.nominals_next_tag big.nominals_next_tag > nominals_aux = Map.foldBack Map.add small.nominals_aux big.nominals_aux > nominals = Map.foldBack Map.add small.nominals big.nominals > prototypes_next_tag = max small.prototypes_next_tag big.prototypes_next_tag > prototypes_instances = Map.foldBack Map.add small.prototypes_instances > big.prototypes_instances > prototypes = Map.foldBack Map.add small.prototypes big.prototypes > ty = > Map.foldBack (fun k v s -> > let v = > match v, s |> Map.tryFind k with > | TyModule x, Some (TyModule x') -> Map.foldBack Map.add x x' |> > TyModule > | _ -> v > s |> Map.add k v > ) small.ty big.ty > term = > Map.foldBack (fun k v s -> > let v = > match v, s |> Map.tryFind k with > | TyModule x, Some (TyModule x') -> Map.foldBack Map.add x x' |> > TyModule > | _ -> v > s |> Map.add k v > ) small.term big.term > constraints = > Map.foldBack (fun k v s -> > let v = > match v, s |> Map.tryFind k with > | M x, Some (M x') -> Map.foldBack Map.add x x' |> M > | _ -> v > s |> Map.add k v > ) small.constraints big.constraints > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### in_moduleInfer > > ── fsharp ────────────────────────────────────────────────────────────────────── > let in_moduleInfer m a : TopEnv = > {a with > ty = Map.add m (TyModule a.ty) Map.empty > term = Map.add m (TyModule a.term) Map.empty > constraints = Map.add m (M a.constraints) Map.empty > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Env_ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Env_ = { ty : Map<string,T>; term : Map<string,T>; constraints : > Map<string,ConstraintOrModule> } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### InferEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type InferEnv = Env_ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### kind_get > > ── fsharp ────────────────────────────────────────────────────────────────────── > let kind_get x = > let rec loop = function > | KindFun(a,b) -> a :: loop b > | a -> [[a]] > let l = loop x > {|arity=List.length l; args=l|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### prototype_init_forall_kind > > ── fsharp ────────────────────────────────────────────────────────────────────── > let prototype_init_forall_kind = function > | TyForall(a,_) -> a.kind > | _ -> failwith "Compiler error: The prototype should have at least one > forall." > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_primt > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_primt = function > | UInt8T -> "u8" > | UInt16T -> "u16" > | UInt32T -> "u32" > | UInt64T -> "u64" > | Int8T -> "i8" > | Int16T -> "i16" > | Int32T -> "i32" > | Int64T -> "i64" > | Float32T -> "f32" > | Float64T -> "f64" > | BoolT -> "bool" > | StringT -> "string" > | CharT -> "char" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### constraint_name > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec constraint_name (env : TopEnv) = function > | CSInt -> "sint" | CUInt -> "uint" | CInt -> "int" > | CFloat -> "float" | CNumber -> "number" | CPrim -> "prim" > | CSymbol -> "symbol" | CRecord -> "record" > | CPrototype i -> env.prototypes.[[i]].name > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### constraint_kind > > ── fsharp ────────────────────────────────────────────────────────────────────── > let constraint_kind (env : TopEnv) = function > | CSInt | CUInt | CInt | CFloat | CNumber | CPrim | CSymbol | CRecord -> > KindType > | CPrototype i -> env.prototypes.[[i]].kind > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### tt > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec tt (env : TopEnv) = function > | TyComment(_,x) | TyMetavar(_,{contents=Some x}) -> tt env x > | TyNominal i -> env.nominals_aux.[[i]].kind > | TyApply(_,_,x) | TyMetavar({kind=x},_) | TyVar({kind=x},_) -> x > | TyExists _ | TyLit _ | TyUnion _ | TyLayout _ | TyMacro _ | TyB | TyPrim _ > | TyForall _ | TyFun _ | TyRecord _ | TyModule _ | TyPair _ | TySymbol _ | > TyArray _ -> KindType > | TyInl(v,a) -> KindFun(v.kind,tt env a) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### has_metavars > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec has_metavars x = > let f = has_metavars > match visit_t x with > | TyMetavar _ -> true > | TyVar _ | TyNominal _ | TyB | TyLit _ | TyPrim _ | TySymbol _ | TyModule _ > -> false > | TyExists(_,a) | TyComment(_,a) | TyLayout(a,_) | TyForall(_,a) | > TyInl(_,a) | TyArray a -> f a > | TyApply(a,b,_) | TyFun(a,b,_) | TyPair(a,b) -> f a || f b > | TyUnion(l,_) -> Map.exists (fun _ -> snd >> f) l > | TyRecord l -> Map.exists (fun _ -> f) l > | TyMacro a -> List.exists (function TMVar x -> has_metavars x | _ -> false) > a > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### term_subst > > ── fsharp ────────────────────────────────────────────────────────────────────── > // Eliminates the metavars in the type if possible. > let term_subst a = > let h = System.Collections.Generic.HashSet(HashIdentity.Reference) > // 'a = 'b = ('c = int * 'd = float) > // visit_t shortens to: > // 'a = ('c = int * 'd = float) > // visit_t returns: > // ('c = int * 'd = float) > // term_subst returns: > // int * float > let inline g a f = > let _ = h.Add(a) > let x = f() > let _ = h.Remove(a) > x > let rec f a = > match visit_t a with > | TyMetavar _ | TyNominal _ | TyB | TyLit _ | TyPrim _ | TySymbol _ as x > -> x > | TyVar(x,r) -> TyVar(x, if h.Contains x then ref None else r) > | TyComment(a,b) -> TyComment(a,f b) > | TyPair(a,b) -> TyPair(f a, f b) > | TyRecord a -> TyRecord(Map.map (fun _ -> f) a) > | TyModule a -> TyModule(Map.map (fun _ -> f) a) > | TyUnion(a,b) -> TyUnion(Map.map (fun _ (is_gadt, x) -> is_gadt, f x) > a,b) > | TyFun(a,b,t) -> TyFun(f a, f b, t) > | TyForall(a,b) -> g a <| fun () -> TyForall(a,f b) > | TyExists(a,b) -> TyExists(a,f b) > | TyArray a -> TyArray(f a) > | TyApply(a,b,c) -> TyApply(f a, f b, c) > | TyInl(a,b) -> g a <| fun () -> TyInl(a,f b) > | TyMacro a -> TyMacro(List.map (function TMVar x -> TMVar(f x) | x -> > x) a) > | TyLayout(a,b) -> TyLayout(f a,b) > f a > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### HoverTypes > > ── fsharp ────────────────────────────────────────────────────────────────────── > type HoverTypes() = > // This is to allocate less trash for code that doesn't use GADTs. > // Unfortunately, we cannot use memoization instead as term_subst is not > functionally pure. > let rec has_substituted_tvars x = > let f = has_substituted_tvars > match x with > | TyMetavar(_,{contents=Some _}) -> true > | TyVar (_, {contents=Some x}) | TyComment(_,x) -> f x > | TyVar _ | TyMetavar _ | TyNominal _ | TyB | TyLit _ | TyPrim _ | > TySymbol _ | TyModule _ -> false > | TyExists(_,a) | TyComment(_,a) | TyLayout(a,_) | TyForall(_,a) | > TyInl(_,a) | TyArray a -> f a > | TyApply(a,b,_) | TyFun(a,b,_) | TyPair(a,b) -> f a || f b > | TyUnion(l,_) -> Map.exists (fun _ -> snd >> f) l > | TyRecord l -> Map.exists (fun _ -> f) l > | TyMacro a -> List.exists (function TMVar x -> has_metavars x | _ -> > false) a > let hover_types = ResizeArray() > member _.AddHover((r : VSCRange),(x,(com : string))) = > hover_types.Add(r,((if has_substituted_tvars x then term_subst x else > x), com)) > member _.ToArray() = hover_types.ToArray() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### module_openInfer > > ── fsharp ────────────────────────────────────────────────────────────────────── > let module_openInfer (hover_types : HoverTypes option) (top_env : InferEnv) > (local_env_ty : Map<string,T>) (r : VSCRange) b l = > let tryFind env x = > match Map.tryFind x env.term, Map.tryFind x env.ty, Map.tryFind x > env.constraints with > | Some (TyModule a), Some (TyModule b), Some (M c) -> ValueSome {term=a; > ty=b; constraints=c} > | _ -> ValueNone > match tryFind top_env b with > | ValueNone -> Result.Error(r, UnboundModule) > | ValueSome env -> > hover_types |> Option.iter (fun hover_types -> > hover_types.AddHover(r,(TyModule env.term,""))) > let rec loop env = function > | (r,x) :: x' -> > match tryFind env x with > | ValueSome env -> > hover_types |> Option.iter (fun hover_types -> > hover_types.AddHover(r,(TyModule env.term,""))) > loop env x' > | _ -> Result.Error(r, ModuleIndexFailedInOpen) > | [[]] -> Result.Ok env > loop env l |> Result.bind (fun env -> > let h = ResizeArray() > local_env_ty |> Map.iter (fun k _ -> if env.ty.ContainsKey k then > h.Add k) > if h.Count > 0 then Result.Error(r, > ModuleIndexWouldShadowLocalVars(h.ToArray())) > else Result.Ok env > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### validate_bound_vars > > ── fsharp ────────────────────────────────────────────────────────────────────── > let validate_bound_vars (top_env : InferEnv) constraints term ty x = > let errors = ResizeArray() > let check_term term (a,b) = if Set.contains b term = false && > Map.containsKey b top_env.term = false then errors.Add(a,UnboundVariable b) > let check_ty ty (a,b) = if Set.contains b ty = false && Map.containsKey b > top_env.ty = false then errors.Add(a,UnboundVariable b) > let check_cons constraints (a,b) = > match Map.tryFind b constraints |> Option.orElseWith (fun () -> > Map.tryFind b top_env.constraints) with > | Some (C _) -> () > | Some (M _) -> errors.Add(a,ExpectedConstraintInsteadOfModule) > | None -> errors.Add(a,UnboundVariable b) > let rec cterm constraints (term, ty) x = > match x with > | RawSymbol _ | RawDefaultLit _ | RawLit _ | RawB _ -> () > | RawV(a,b,_) -> check_term term (a,b) > | RawType(_,x) -> ctype constraints term ty x > | RawMatch(_,body,l) -> cterm constraints (term, ty) body; List.iter > (fun (a,b) -> cterm constraints (cpattern constraints term ty a) b) l > | RawFun(_,l) -> List.iter (fun (a,b) -> cterm constraints (cpattern > constraints term ty a) b) l > | RawForall(_,((_,(a,_)),l),b) -> List.iter (check_cons constraints) l; > cterm constraints (term, Set.add a ty) b > | RawFilledForall _ -> failwith "Compiler error: Should not appear > during variable validation." > | RawRecBlock(_,l,on_succ) -> > let term = List.fold (fun s ((_,x),_) -> Set.add x s) term l > List.iter (fun (_,x) -> cterm constraints (term, ty) x) l > cterm constraints (term, ty) on_succ > | RawRecordWith(_,a,b,c) -> > List.iter (cterm constraints (term, ty)) a > List.iter (function > | RawRecordWithSymbol(_,e) | RawRecordWithSymbolModify(_,e) -> > cterm constraints (term, ty) e > | RawRecordWithInjectVar(v,e) | > RawRecordWithInjectVarModify(v,e) -> check_term term v; cterm constraints (term, > ty) e > ) b > List.iter (function RawRecordWithoutSymbol _ -> () | > RawRecordWithoutInjectVar (a,b) -> check_term term (a,b)) c > | RawOp(_,_,l) -> List.iter (cterm constraints (term, ty)) l > | RawReal(_,x) | RawJoinPoint(_,_,x,_) -> cterm constraints (term, ty) x > | RawExists(_,(_,a),b) -> Option.iter (List.iter (ctype constraints term > ty)) a; cterm constraints (term, ty) b > | RawAnnot(_,RawMacro(_,a),b) -> cmacro constraints term ty a; ctype > constraints term ty b > | RawMacro(r,a) -> errors.Add(r,MacroIsMissingAnnotation); cmacro > constraints term ty a > | RawAnnot(_,RawArray(_,a),b) -> List.iter (cterm constraints (term, > ty)) a; ctype constraints term ty b > | RawArray(r,a) -> errors.Add(r,ArrayIsMissingAnnotation); List.iter > (cterm constraints (term, ty)) a > | RawAnnot(_,a,b) -> cterm constraints (term, ty) a; ctype constraints > term ty b > | RawTypecase(_,a,b) -> > ctype constraints term ty a > List.iter (fun (a,b) -> > ctype constraints term ty a > cterm constraints (term, ty + metavars a) b > ) b > | RawOpen(_,(a,b),l,on_succ) -> > match module_openInfer None top_env Map.empty a b l with > | Result.Ok x -> > let combine e m = Map.fold (fun s k _ -> Set.add k s) e m > cterm (Map.foldBack Map.add x.constraints constraints) (combine > term x.term, combine ty x.ty) on_succ > | Result.Error e -> errors.Add(e) > | RawHeapMutableSet(_,a,b,c) -> cterm constraints (term, ty) a; > List.iter (cterm constraints (term, ty)) b; cterm constraints (term, ty) c > | RawSeq(_,a,b) | RawPair(_,a,b) | RawIfThen(_,a,b) | RawApply(_,a,b) -> > cterm constraints (term, ty) a; cterm constraints (term, ty) b > | RawIfThenElse(_,a,b,c) -> cterm constraints (term, ty) a; cterm > constraints (term, ty) b; cterm constraints (term, ty) c > | RawMissingBody r -> errors.Add(r,MissingBody) > and cmacro constraints term ty a = > List.iter (function > | RawMacroText _ -> () > | RawMacroTerm(r,a) -> cterm constraints (term, ty) a > | RawMacroType(r,a) | RawMacroTypeLit(r,a) -> ctype constraints term > ty a > ) a > and ctype constraints term ty x = > match x with > | RawTFilledNominal(_,_) | RawTPrim _ | RawTWildcard _ | RawTLit _ | > RawTB _ | RawTSymbol _ | RawTMetaVar _ -> () > | RawTTypecase(_,a,b) -> > ctype constraints term ty a > List.iter (fun (a,b) -> > ctype constraints term ty a > ctype constraints term (ty + metavars a) b > ) b > | RawTVar(a,b) -> check_ty ty (a,b) > | RawTArray(_,a) | RawTLayout(_,a,_) -> ctype constraints term ty a > | RawTPair(_,a,b) | RawTApply(_,a,b) | RawTFun(_,a,b,_) -> ctype > constraints term ty a; ctype constraints term ty b > | RawTUnion(_,l,_,this) -> Map.iter (fun _ (_,x) -> ctype constraints > term ty x) l; ctype constraints term ty this > | RawTRecord(_,l) -> Map.iter (fun _ -> ctype constraints term ty) l > | RawTForall(_,((_,(a,_)),l),b) -> List.iter (check_cons constraints) l; > ctype constraints term (Set.add a ty) b > | RawTExists(_,a,b) -> > let ty = > List.fold (fun ty ((_,(a,_)),l) -> > List.iter (check_cons constraints) l > Set.add a ty > ) ty a > ctype constraints term ty b > | RawTTerm (_,a) -> cterm constraints (term, ty) a > | RawTMacro(_,a) -> cmacro constraints term ty a > and cpattern constraints term ty x = > //let is_first = System.Collections.Generic.HashSet() > let rec loop (term, ty) x = > let f = loop (term, ty) > match x with > | PatDefaultValue _ | PatFilledDefaultValue _ | PatValue _ | > PatSymbol _ | PatB _ | PatE _ -> term, ty > | PatExists(_,a,b) -> > let ty = List.fold (fun s (_,x) -> Set.add x s) ty a > loop (term, ty) b > | PatVar(_,b) -> > //if is_first.Add b then () // TODO: I am doing it like this so > I can reuse this code later for variable highlighting. > Set.add b term, ty > | PatDyn(_,x) | PatUnbox(_,_,x) -> f x > | PatPair(_,a,b) -> loop (f a) b > | PatRecordMembers(_,l) -> > List.fold (fun s -> function > | PatRecordMembersSymbol(_,x) -> loop s x > | PatRecordMembersInjectVar((a,b),x) -> check_term term > (a,b); loop s x > ) (term, ty) l > | PatAnd(_,a,b) | PatOr(_,a,b) -> loop (loop (term, ty) a) b > | PatAnnot(_,a,b) -> ctype constraints term ty b; f a > | PatWhen(_,a,b) -> let r = f a in cterm constraints r b; r > | PatNominal(_,(r,a),_,b) -> check_ty ty (r,a); f b > | PatArray(_,a) -> List.fold loop (term, ty) a > loop (term, ty) x > > match x with > | Choice1Of2 x -> cterm constraints (term, ty) x > | Choice2Of2 x -> ctype constraints term ty x > errors > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### assert_bound_vars > > ── fsharp ────────────────────────────────────────────────────────────────────── > let assert_bound_vars (top_env : InferEnv) constraints term ty x = > let errors = validate_bound_vars top_env constraints term ty x > if 0 < errors.Count then raise (InferTypeErrorException (Seq.toList errors)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### subst > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec subst (m : (Var * T) list) x = > let f = subst m > if List.isEmpty m then x > else > match x with > | TyComment(_,x) > | TyMetavar(_,{contents=Some x}) > | TyVar (_,{contents=Some x}) -> f x // Don't do path shortening here. > | TyMetavar _ | TyNominal _ | TyB | TyLit _ | TyPrim _ | TySymbol _ -> x > | TyPair(a,b) -> TyPair(f a, f b) > | TyRecord a -> TyRecord(Map.map (fun _ -> f) a) > | TyModule a -> TyModule(Map.map (fun _ -> f) a) > | TyUnion(a,b) -> TyUnion(Map.map (fun _ (is_gadt,body) -> is_gadt, f > body) a,b) > | TyFun(a,b,t) -> TyFun(f a, f b, t) > | TyArray a -> TyArray(f a) > | TyApply(a,b,c) -> TyApply(f a, f b, c) > | TyVar (a,_) -> List.tryPick (fun (v,x) -> if a = v then Some x else > None) m |> Option.defaultValue x > | TyForall(a,b) -> TyForall(a, f b) > | TyExists(a,b) -> TyExists(a, f b) > | TyInl(a,b) -> TyInl(a, f b) > | TyMacro a -> TyMacro(List.map (function TMVar x -> TMVar(f x) | x -> > x) a) > | TyLayout(a,b) -> TyLayout(f a,b) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### type_apply_split > > ── fsharp ────────────────────────────────────────────────────────────────────── > let type_apply_split x = > let rec loop s x = > match visit_t x with > | TyApply(a,b,_) -> loop (b :: s) a > | x -> x, s > loop [[]] x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### kind_subst > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec kind_subst = function > | KindMetavar ({contents'=Some x} & link) -> shorten' x link kind_subst > | KindMetavar _ | KindType as x -> x > | KindFun(a,b) -> KindFun(kind_subst a,kind_subst b) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### foralls_get > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec foralls_get = function > | RawForall(_,a,b) -> let a', b = foralls_get b in a :: a', b > | b -> [[]], b > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### foralls_ty_get > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec foralls_ty_get = function > | TyForall(a,b) -> let a', b = foralls_ty_get b in a :: a', b > | b -> [[]], b > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### kind_force > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec kind_force = function > | KindMetavar ({contents'=Some x} & link) -> shorten' x link kind_force > | KindMetavar link -> let x = KindType in link.contents' <- Some x; x > | KindType as x -> x > | KindFun(a,b) -> KindFun(kind_force a,kind_force b) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### p > > ── fsharp ────────────────────────────────────────────────────────────────────── > let p prec prec' x = > if prec < prec' then x else sprintf "(%s)" x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_kind > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_kind x = > let rec f prec x = > let p = p prec > match x with > | KindMetavar {contents'=Some x} -> f prec x > | KindMetavar _ -> "?" > | KindType -> "*" > | KindFun(a,b) -> p 20 (sprintf "%s -> %s" (f 20 a) (f 19 b)) > f -1 x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_constraints > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_constraints env x = Set.toList x |> List.map (constraint_name env) |> > String.concat "; " |> sprintf "{%s}" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_nominal > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_nominal (env : TopEnv) i = match Map.tryFind i env.nominals_aux with > Some x -> x.name | None -> "?" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_layout_type > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_layout_type = function Heap -> "heap" | HeapMutable -> "mut" | > StackMutable -> "stack_mut" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_t > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_t (env : TopEnv) x = > let show_var (a : Var) = > let n = match a.kind with KindType -> a.name | _ -> sprintf "(%s : %s)" > a.name (show_kind a.kind) > if Set.isEmpty a.constraints then n > else sprintf "%s %s" n (show_constraints env a.constraints) > let rec f prec x = > let p = p prec > match x with > | TyVar (_, {contents=Some x}) | TyComment(_,x) | > TyMetavar(_,{contents=Some x}) -> f prec x > | TyMetavar _ -> "_" > | TyVar (a, _) -> a.name > | TyNominal i -> > match Map.tryFind i env.nominals_aux with > | Some x when prec < 0 -> sprintf "(%s : %s)" x.name (show_kind > x.kind) > | Some x -> x.name > | _ -> "?" > | TyB -> "()" > | TyLit x -> show_lit x > | TyPrim x -> show_primt x > | TySymbol x -> sprintf ".%s" x > | TyExists(a,b) -> > let a = List.map show_var a |> String.concat " " > p 0 (sprintf "exists %s. %s" a (f -1 b)) > | TyForall _ -> > let a, b = > let rec loop = function > | TyForall(a,b) -> let a',b = loop b in (a :: a'), b > | b -> [[]], b > loop x > let a = List.map show_var a |> String.concat " " > p 0 (sprintf "forall %s. %s" a (f -1 b)) > | TyInl _ -> > let a, b = > let rec loop = function > | TyInl(a,b) -> let a',b = loop b in (a :: a'), b > | b -> [[]], b > loop x > let a = List.map show_var a |> String.concat " " > p 0 (sprintf "%s => %s" a (f -1 b)) > | TyArray a -> p 30 (sprintf "array_base %s" (f 30 a)) > | TyApply(a,b,_) -> p 30 (sprintf "%s %s" (f 29 a) (f 30 b)) > | TyPair(a,b) -> p 25 (sprintf "%s * %s" (f 25 a) (f 24 b)) > | TyFun(a,b,FT_Vanilla) -> p 20 (sprintf "%s -> %s" (f 20 a) (f 19 b)) > | TyFun(a,b,FT_Pointer) -> p 20 (sprintf "fptr (%s -> %s)" (f 20 a) (f > 19 b)) > | TyFun(a,b,FT_Closure) -> p 20 (sprintf "closure (%s -> %s)" (f 20 a) > (f 19 b)) > | TyModule l -> > if prec = -2 then > l |> Map.toList |> List.map (fun (k,v) -> > let a,b = k, f -1 v > match v with > | TyComment(com,_) -> sprintf "%s : %s\n---\n%s\n---\n" a b > com > | _ -> sprintf "%s : %s" a b > ) > |> String.concat "\n" > else "module" > | TyRecord l -> sprintf "{%s}" (l |> Map.toList |> List.map (fun > ((_,k),v) -> sprintf "%s : %s" k (f -1 v)) |> String.concat "; ") > | TyUnion(l,_) -> sprintf "{%s}" (l |> Map.toList |> List.map (fun > ((_,k),(_,v)) -> sprintf "%s : %s" k (f -1 v)) |> String.concat "| ") > | TyMacro a -> p 30 (List.map (function TMLitVar a | TMVar a -> f -1 a | > TMText a -> a) a |> String.concat "") > | TyLayout(a,b) -> p 30 (sprintf "%s %s" (show_layout_type b) (f 30 a)) > > f -2 x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_type_error > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_type_error (env : TopEnv) x = > let f = show_t env > match x with > | IncorrectRecursiveNominal -> "The non-recursive nominals should not use > their own type in the clause." > | IncorrectGADTConstructorType -> "The GADT case in the union has to result > in an instance of the union being constructed. Any type other than the self > being in the range of the union is not allowed." > | ExistsShouldntHaveMetavars a -> sprintf "The variables of the exists body > shouldn't have metavariables left over in them.\nGot: [[%s]]" (List.map f a |> > String.concat ", ") > | ExpectedExistentialInPattern a -> sprintf "The variable being destructured > in the pattern match need to be explicitly annotated and with an existential > type.\nGot: %s" (f a) > | UnexpectedNumberOfArgumentsInExistsPattern(got,exp) -> sprintf "The number > of arguments in the existential pattern doesn't match the one in the type.\nGot: > %i\nExpected: %i" got exp > | UnexpectedNumberOfArgumentsInExistsBody(got,exp) -> sprintf "The number of > arguments in the existential body doesn't match the one in the type.\nGot: > %i\nExpected: %i" got exp > | ExpectedExistentialInTerm a -> sprintf "The body of `expects` need to be > explicitly annotated and with an existential type.\nGot: %s" (f a) > | UnionsCannotBeApplied -> "Unions cannot be applied." > | ExpectedNominalInApply a -> sprintf "Expected a nominal.\nGot: %s" (f a) > | MalformedNominal -> "Malformed nominal." > | ModuleMustBeImmediatelyApplied -> "Module must be immediately applied." > | ExpectedSymbol' a -> sprintf "Expected a symbol.\nGot: %s" (f a) > | KindError(a,b) -> sprintf "Kind unification failure.\nGot: > %s\nExpected: %s" (show_kind a) (show_kind b) > | KindErrorInConstraint(a,b) -> sprintf "Kind unification failure when > propagating them from constraints.\nGot: %s\nExpected: %s" (show_kind a) > (show_kind b) > | TermError(a,b) -> sprintf "Unification failure.\nGot: %s\nExpected: > %s" (f a) (f b) > | RecursiveMetavarsNotAllowed(a,b) -> sprintf "Recursive metavariables are > not allowed. A metavar cannot be unified with a type that has itself.\nGot: > %s\nExpected: %s" (f a) (f b) > | RecursiveTypevarsNotAllowed(a,b) -> sprintf "Recursive type variables are > not allowed. A type variable cannot be unified with a type that has > itself.\nGot: %s\nExpected: %s" (f a) (f b) > | ExpectedSymbolAsRecordKey a -> sprintf "Expected symbol as a record > key.\nGot: %s" (f a) > | ExpectedSymbolAsModuleKey a -> sprintf "Expected symbol as a module > key.\nGot: %s" (f a) > | UnboundVariable x -> sprintf "Unbound variable: %s." x > | UnboundModule -> sprintf "Unbound module." > | ModuleIndexFailedInOpen -> sprintf "Module does not have a submodule with > that key." > | ModuleIndexWouldShadowLocalVars [[|v|]] -> $"The module open would shadow > a local variable: {v}." > | ModuleIndexWouldShadowLocalVars vars -> let v = String.concat ", " vars in > $"The module open would shadow the local variables: {v}." > | TypeVarScopeError(a,_,_) -> sprintf "Tried to unify the type variable %s > with a metavar outside its scope." a > | ForallVarConstraintError(n,a,b) -> sprintf "Metavariable's constraints > must be a subset of the forall var %s's.\nGot: %s\nExpected: %s" n > (show_constraints env a) (show_constraints env b) > | MetavarsNotAllowedInRecordWith -> sprintf "In the top-down segment the > record keys need to be fully known. Please add an annotation." > | LayoutSetMustBeAnnotated -> sprintf "The layout type being set must be > annotated." > | ExpectedMutableLayout a -> sprintf "Expected a mutable layout type.\nGot: > %s" (f a) > | ExpectedRecord a -> sprintf "Expected a record.\nGot: %s" (f a) > | ExpectedRecordInsideALayout a -> sprintf "Expected a record inside a > layout type.\nGot: %s" (f a) > | ExpectedRecordAsResultOfIndex a -> sprintf "Expected a record as result of > index.\nGot: %s" (f a) > | RecordIndexFailed a -> sprintf "The record does not have the key: %s" a > | ModuleIndexFailed a -> sprintf "The module does not have the key: %s" a > | ExpectedModule a -> sprintf "Expected a module.\nGot: %s" (f a) > | ExpectedSymbolInRecordWith a -> sprintf "Expected a symbol.\nGot: %s" (f > a) > | RealFunctionInTopDown -> sprintf "Real segment functions are forbidden in > the top-down segment. They can only be used in `real` expressions or .spir > modules." > | MissingRecordFieldsInPattern(a,b) -> sprintf "The record is missing the > following fields: %s.\nGot: %s" (String.concat ", " b) (f a) > | CasePatternNotFoundForType(i,n) -> sprintf "%s does not have the %s case." > (show_nominal env i) n > | CasePatternNotFound n -> sprintf "Cannot find a function with the same > name as the %s case in the environment." n > | CannotInferCasePatternFromTermInEnv a -> sprintf "Cannot infer the higher > order type that has this case from the following type.\nGot: %s" (f a) > | NominalInPatternUnbox i -> sprintf "Expected an union type, but %s is a > nominal." (show_nominal env i) > | TypeInEnvIsNotNominal a -> sprintf "Expected a nominal type.\nGot: %s" (f > a) > | UnionInPatternNominal i -> sprintf "Expected a nominal type, but %s is an > union." (show_nominal env i) > | ConstraintError(a,b) -> sprintf "Constraint satisfaction error.\nGot: > %s\nFails to satisfy: %s" (f b) (constraint_name env a) > | ExpectedAnnotation -> sprintf "Recursive functions with foralls must be > fully annotated." > | ExpectedSinglePattern -> sprintf "Recursive functions with foralls must > not have multiple clauses in their patterns." > | RecursiveAnnotationHasMetavars a -> sprintf "Recursive functions with > foralls must not have metavars.\nGot: %s" (f a) > | ValueRestriction a -> sprintf "Metavars that are not part of the enclosing > function's signature are not allowed. They need to be values.\nGot: %s" (f a) > | DuplicateRecInlName -> "Shadowing of functions by the members of the same > mutually recursive block is not allowed." > | DuplicateKeyInRecUnion -> "Mutually recursive unions should not have > overlapping keys." > | ExpectedConstraintInsteadOfModule -> sprintf "Expected a constraint > instead of module." > | InstanceNotFound(prot,ins) -> sprintf "The higher order type instance %s > does not have the prototype %s." (show_nominal env ins) > env.prototypes.[[prot]].name > | ExpectedPrototypeConstraint a -> sprintf "Expected a prototype > constraint.\nGot: %s" (constraint_name env a) > | PrototypeConstraintCannotPropagateToMetavar(a,b) -> sprintf "Cannot > propagate the %s prototype constraint to the applied metavariable as the kinds > would not match. If this is not intended to be a type var, provide a type > annotation to a concrete type.\nGot: %s" env.prototypes.[[a]].name (f b) > | PrototypeConstraintCannotPropagateToVar(a,b) -> sprintf "Cannot propagate > the %s prototype constraint to the applied type variable as the kinds would not > match.\nGot: %s" env.prototypes.[[a]].name (f b) > | ExpectedPrototypeInsteadOfModule -> "Expected a prototype instead of > module." > | ExpectedHigherOrder a -> sprintf "Expected a higher order type.\nGot: %s" > (f a) > | InstanceArityError(prot,ins) -> sprintf "The arity of the instance must be > greater or equal to that of the prototype.\nInstance arity: %i\nPrototype > arity: %i" ins prot > | InstanceCoreVarsShouldMatchTheArityDifference(num_vars,expected) -> > sprintf "The number of forall variables in the instance needs to be specified so > it equals the difference between the instance arity and the prototype > arity.\nInstance variables specified: %i\nExpected: %i" > num_vars expected > | InstanceKindError(a,b) -> sprintf "The kinds of the instance foralls are > incompatible with those of the prototype.\nGot: %s\nExpected: %s" > (show_kind a) (show_kind b) > | KindNotAllowedInInstanceForall -> "Kinds should not be explicitly stated > in instance foralls." > | InstanceVarShouldNotMatchAnyOfPrototypes -> "Instance forall must not have > the same name as any of the prototype foralls." > | MissingBody -> "The function body is missing." > | MacroIsMissingAnnotation -> "The macro needs an annotation." > | ArrayIsMissingAnnotation -> "The array needs an annotation." > | ExistsIsMissingAnnotation -> "The existential type needs an annotation." > | ShadowedForall -> "Shadowing of foralls is not allowed in the top-down > segment." > | ShadowedExists -> "Shadowing of existential type variables is not allowed > in the top-down segment." > | UnionTypesMustHaveTheSameLayout -> "The two union types must have the same > layout." > | OrphanInstance -> "The instance has to be defined in the same package as > either the prototype or the nominal." > | ShadowedInstance -> "The instance cannot be defined twice." > | UnusedTypeVariable [[x]] -> sprintf "The type variable %s is unused in the > function's type signature." x > | UnusedTypeVariable vars -> sprintf "The type variables %s are unused in > the function's type signature." (vars |> String.concat ", ") > | CompilerError x -> x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### loc_env > > ── fsharp ────────────────────────────────────────────────────────────────────── > let loc_env (x : TopEnv) = {term=x.term; ty=x.ty; constraints=x.constraints} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### names_of > > ── fsharp ────────────────────────────────────────────────────────────────────── > let names_of vars = List.map (fun x -> x.name) vars |> Set > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### lit > > ── fsharp ────────────────────────────────────────────────────────────────────── > let lit = function > | LitUInt8 _ -> TyPrim UInt8T > | LitUInt16 _ -> TyPrim UInt16T > | LitUInt32 _ -> TyPrim UInt32T > | LitUInt64 _ -> TyPrim UInt64T > | LitInt8 _ -> TyPrim Int8T > | LitInt16 _ -> TyPrim Int16T > | LitInt32 _ -> TyPrim Int32T > | LitInt64 _ -> TyPrim Int64T > | LitFloat32 _ -> TyPrim Float32T > | LitFloat64 _ -> TyPrim Float64T > | LitBool _ -> TyPrim BoolT > | LitString _ -> TyPrim StringT > | LitChar _ -> TyPrim CharT > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### autogen_name_in_fun > > ── fsharp ────────────────────────────────────────────────────────────────────── > let autogen_name_in_fun (i : int) = let x = char i + 'a' in if 'z' < x then > sprintf "'%i" i else sprintf "'%c" x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### autogen_name_in_typecase > > ── fsharp ────────────────────────────────────────────────────────────────────── > let autogen_name_in_typecase (i : int) = let x = char i + 'a' in if 'z' < x then > sprintf "'t%i" i else sprintf "'t%c" x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### trim_kind > > ── fsharp ────────────────────────────────────────────────────────────────────── > let trim_kind = function KindFun(_,k) -> k | _ -> failwith "impossible" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### FilledTop > > ── fsharp ────────────────────────────────────────────────────────────────────── > // Similar to BundleTop except with type annotations and type application filled > in. > type FilledTop = > | FType of VSCRange * RString * HoVar list * RawTExpr > | FNominal of VSCRange * RString * HoVar list * RawTExpr > | FNominalRec of (VSCRange * RString * HoVar list * RawTExpr) list > | FInl of VSCRange * RString * RawExpr > | FRecInl of (VSCRange * RString * RawExpr) list > | FPrototype of VSCRange * RString * RString * TypeVar list * RawTExpr > | FInstance of VSCRange * RGlobalId * RGlobalId * RawExpr > | FOpen of VSCRange * RString * RString list > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### 'a AdditionType > > ── fsharp ────────────────────────────────────────────────────────────────────── > type 'a AdditionType = > | AOpen of 'a > | AInclude of 'a > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### InferScope > > ── fsharp ────────────────────────────────────────────────────────────────────── > type InferScope = int > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### InferResult > > ── fsharp ────────────────────────────────────────────────────────────────────── > type [[<ReferenceEquality>]] InferResult = { > filled_top : FilledTop Hopac.Promise > top_env_additions : TopEnv AdditionType > offset : int > hovers : RString [[]] > errors : RString list > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### dispose_gadt_links > > ── fsharp ────────────────────────────────────────────────────────────────────── > let dispose_gadt_links gadt_links = Seq.iter (fun (x : ref<option<'a>>) -> > x.Value <- None) gadt_links > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### assert_foralls_used' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let assert_foralls_used' (errors : (VSCRange * TypeError) ResizeArray) > outside_foralls r x = > let h = HashSet() > let rec f x = > match visit_t x with > | TyVar (v,_) -> Set.singleton v.name > | TyExists(v,a) -> > List.fold (fun a v -> > if Set.contains v.name a = false then h.Add(v.name) |> ignore; a > else Set.remove v.name a > ) (f a) v > | TyForall(v,a) -> > let a = f a > if Set.contains v.name a = false then h.Add(v.name) |> ignore; a > else Set.remove v.name a > | TyUnion _ | TyModule _ | TyMetavar _ | TyNominal _ | TyB | TyLit _ | > TyPrim _ | TySymbol _ -> Set.empty > | TyPair(a,b) | TyApply(a,b,_) | TyFun(a,b,_) -> f a + f b > | TyRecord a -> Map.fold (fun s _ x -> Set.union s (f x)) Set.empty a > | TyComment(_,a) | TyLayout(a,_) | TyInl(_,a) | TyArray a -> f a > | TyMacro a -> > List.fold (fun s x -> > match x with > | TMLitVar a | TMVar a -> f a > | TMText _ -> Set.empty > ) Set.empty a > let used_vars = f x > Seq.iter (h.Add >> ignore) (outside_foralls - used_vars) > if 0 < h.Count then > errors.Add(r, UnusedTypeVariable (Seq.toList h)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### assert_foralls_used > > ── fsharp ────────────────────────────────────────────────────────────────────── > let assert_foralls_used errors r x = assert_foralls_used' errors Set.empty r x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### validate_nominal > > ── fsharp ────────────────────────────────────────────────────────────────────── > let validate_nominal (errors : _ ResizeArray) global_id body v = > // Stack union types and regular nominals must not be recursive. > // Unlike in the previous version of Spiral which simply didn't put the > nominal type in the environment > // this one has to do it becaus the GADT constructors need access to it. > let rec assert_nominal_non_recursive v = > let f = assert_nominal_non_recursive > match visit_t v with > | TyNominal global_id' -> if global_id = global_id' then > errors.Add(range_of_texpr_gadt_body body, IncorrectRecursiveNominal) > | TyMetavar _ | TyVar _ | TyModule _ | TyUnion _ | TyB | TyLit _ | > TyPrim _ | TySymbol _ -> () > | TyPair(a,b) | TyApply(a,b,_) | TyFun(a,b,_) -> f a; f b > | TyRecord a -> Map.iter (fun _ -> f) a > | TyExists(_,a) | TyComment(_,a) | TyLayout(a,_) | TyForall(_,a) | > TyInl(_,a) | TyArray a -> f a > | TyMacro a -> List.iter (function TMLitVar a | TMVar a -> f a | TMText > _ -> ()) a > match v with // Validates the union type. > | TyUnion(a,b) -> > a |> Map.iter (fun name (is_gadt, v) -> > let body = > match body with > | RawTUnion(_,a,_,_) -> Map.find name a |> snd > | _ -> failwith "Compiler error: Expected an union." > let is_stack = b = UStack > > // Makes sure that the GADT constructor is resulting in its own > type. > // Also make sure that it's not using an instance of itself in its > constructor other than in first position. > let rec assert_gadt_has_proper_specialized_constructor = function > | TyNominal global_id' -> if global_id <> global_id' then > errors.Add(range_of_texpr_gadt_constructor body, IncorrectGADTConstructorType) > | TyApply(a,b,_) -> > assert_gadt_has_proper_specialized_constructor a > if is_stack then assert_nominal_non_recursive b > | _ -> errors.Add(range_of_texpr_gadt_constructor body, > IncorrectGADTConstructorType) > > let assert_gadt_is_valid v = > let rec find_gadt_constructor outside_foralls = function > | TyForall(n,t) -> find_gadt_constructor (Set.add n.name > outside_foralls) t > | TyFun(a,b,_) -> > if is_stack then assert_nominal_non_recursive a > assert_gadt_has_proper_specialized_constructor b > assert_foralls_used errors (range_of_texpr_gadt_body > body) a > assert_foralls_used' errors outside_foralls > (range_of_texpr_gadt_constructor body) b > | b -> > assert_gadt_has_proper_specialized_constructor b > assert_foralls_used' errors outside_foralls > (range_of_texpr_gadt_constructor body) b > > find_gadt_constructor Set.empty v > > if is_gadt then assert_gadt_is_valid v > else > if is_stack then assert_nominal_non_recursive v > assert_foralls_used errors (range_of_texpr body) v // We need to > assert that the foralls in regular union bodies are checked. > ) > | _ -> > assert_nominal_non_recursive v > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### kind_to_rawkind > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec kind_to_rawkind (x : TT) : RawKindExpr = > match visit_tt x with > | KindMetavar _ | KindType -> RawKindStar > | KindFun(a,b) -> RawKindFun(kind_to_rawkind a, kind_to_rawkind b) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### var_to_hovar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let var_to_hovar r (x : Var) : HoVar = r,(x.name,kind_to_rawkind x.kind) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### var_to_typevar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let var_to_typevar r (x : Var) : TypeVar = var_to_hovar r x, [[]] // In the > bottom up segment the constrains aren't checked anywhere so we'll put an empty > list here. > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### infer > > ── fsharp ────────────────────────────────────────────────────────────────────── > let infer package_id module_id (top_env' : TopEnv) expr = > let at_tag i = {package_id=package_id; module_id=module_id; tag=i} > let mutable top_env = top_env' // Is mutated only in two places at the top > level. During actual inference can otherwise be thought of as immutable. > let errors = ResizeArray() > let generalized_statements = Dictionary(HashIdentity.Reference) > let type_apply_args = Dictionary(HashIdentity.Reference) > let module_type_apply_args = Dictionary(HashIdentity.Reference) > let annotations = Dictionary<obj,_>(HashIdentity.Reference) > let exists_vars = Dictionary<obj,_>(HashIdentity.Reference) > let gadt_typecases = Dictionary<obj,_>(HashIdentity.Reference) > let mutable autogened_forallvar_count_in_typecase = 0 > let mutable autogened_forallvar_count_in_funs = 0 > let hover_types = HoverTypes() > > /// Fills in the type applies and annotations, and generalizes statements. > Also strips annotations from terms and patterns. > /// Dealing with recursive statement type applies requires some special > consideration. > let fill r rec_term expr = > assert (0 = errors.Count) > let t_to_rawtexpr r vars_to_metavars expr = > let rec f x = > match visit_t x with > | TyUnion _ | TyMetavar _ | TyInl _ | TyModule _ as x -> > failwithf "Compiler error: These cases should not appear in fill.\nGot: %A" x > | TyForall(a,b) -> RawTForall(r,var_to_typevar r a,f b) > | TyComment(_,x) -> f x > | TyB -> RawTB r > | TyLit x -> RawTLit(r,x) > | TyPrim x -> RawTPrim(r,x) > | TySymbol x -> RawTSymbol(r,x) > | TyPair(a,b) -> RawTPair(r,f a,f b) > | TyRecord l -> RawTRecord(r,Map.map (fun _ -> f) l) > | TyFun(a,b,t) -> RawTFun(r,f a,f b,t) > | TyExists(a,b) -> RawTExists(r,a |> List.map (fun n -> > (r,(n.name,RawKindWildcard)),[[]]), f b) > | TyArray a -> RawTArray(r,f a) > | TyNominal i -> RawTFilledNominal(r,i) > | TyApply(a,b,_) -> RawTApply(r,f a,f b) > | TyVar (a,_) -> > let is_typecase_metavar = List.tryFind (function TyVar(b,_) > -> a = b | _ -> failwith "Compiler error: Expected a TyVar.") vars_to_metavars > |> Option.isSome > if is_typecase_metavar then RawTMetaVar(r,a.name) else > RawTVar(r,a.name) > | TyMacro l -> l |> List.map (function TMText x -> > RawMacroText(r,x) | TMVar x -> RawMacroType(r,f x) | TMLitVar x -> > RawMacroTypeLit(r,f x)) |> fun l -> RawTMacro(r,l) > | TyLayout(a,b) -> RawTLayout(r,f a,b) > f expr > let annot r x = t_to_rawtexpr r [[]] (snd annotations.[[x]]) > let rec fill_typecases rec_term x = > match gadt_typecases.TryGetValue(x) with > | true, typecase_data -> > Seq.foldBack (fun > (typecase_cond,forall_vars,typecase_constructor) typecase_body -> > let r = range_of_expr typecase_body > RawTypecase(r, t_to_rawtexpr r [[]] typecase_cond, > [[t_to_rawtexpr r forall_vars typecase_constructor, typecase_body]]) > ) typecase_data (term rec_term x) > | _ -> > term rec_term x > and fill_foralls r rec_term body = > let _,body = foralls_get body > let l,_ = foralls_ty_get generalized_statements.[[body]] > List.foldBack (fun (x : Var) s -> RawFilledForall(r,x.name,s)) l > (term rec_term body) > and term rec_term x = > let f = term rec_term > let clauses l = > List.map (fun (a, b) -> > let rec_term,a = pattern rec_term a > a,fill_typecases rec_term b > ) l > match x with > | RawFilledForall _ | RawMissingBody _ | RawType _ as x -> failwithf > "Compiler error: These cases should not appear in fill. It is intended to be > called on top level statements only.\nGot: %A" x > | RawTypecase _ > | RawSymbol _ | RawB _ | RawLit _ | RawOp _ -> x > | RawReal(_,x) -> x > | RawV(r,n,false) -> x > | RawV(r,n,true) -> > match type_apply_args.TryGetValue(n) with > | true, type_apply_args -> > match Map.tryFind n rec_term with > | None -> fst type_apply_args > | Some t -> t |> snd type_apply_args > |> List.fold (fun s x -> > RawApply(r,s,RawType(r,t_to_rawtexpr r [[]] x))) x > | _ -> x > | RawDefaultLit(r,_) -> RawAnnot(r,x,annot r x) > | RawForall(r,a,b) -> RawForall(r,a,f b) > | RawMatch(r'',(RawForall _ | RawFun _) & body,[[PatVar(r,name), > on_succ]]) -> > let _,body = foralls_get body > RawMatch(r'',fill_foralls r rec_term body,[[PatVar(r,name), > fill_typecases (Map.remove name rec_term) on_succ]]) > | RawMatch(r,a,b) -> RawMatch(r,f a,clauses b) > | RawFun(r,a) -> RawAnnot(r,RawFun(r,clauses a),annot r x) > | RawExists(r,(r',a),b) -> RawExists(r,(r',Some(Option.defaultWith > (fun () -> List.map (t_to_rawtexpr r [[]]) exists_vars.[[x]]) a)),f b) > | RawRecBlock(r,l,on_succ) -> > let has_foralls = List.exists (function (_,RawForall _) -> true > | _ -> false) l > if has_foralls then RawRecBlock(r,List.map (fun (a,b) -> a, f b) > l,f on_succ) > else > let rec_term = List.fold (fun s ((_,name),b) -> Map.add name > generalized_statements.[[foralls_get b |> snd]] s) rec_term l > let l = List.map (fun (a,b) -> a, fill_foralls (fst a) > rec_term b) l > RawRecBlock(r,l,f on_succ) > | RawRecordWith(r,a,b,c) -> > let b = b |> List.map (function > | RawRecordWithSymbol(a,b) -> RawRecordWithSymbol(a,f b) > | RawRecordWithSymbolModify(a,b) -> > RawRecordWithSymbolModify(a,f b) > | RawRecordWithInjectVar(a,b) -> RawRecordWithInjectVar(a,f > b) > | RawRecordWithInjectVarModify(a,b) -> > RawRecordWithInjectVarModify(a,f b) > ) > RawRecordWith(r,List.map f a,b,c) > | RawJoinPoint(r,q,a,b) -> RawAnnot(r,RawJoinPoint(r,q,f a,b),annot > r x) > | RawAnnot(r,a,_) -> f a > | RawOpen(r,a,b,c) -> > let f = function TyModule s -> s | _ -> failwith "Compiler > error: Module open should always succeed in fill." > List.fold (fun s x -> (f s).[[snd x]]) top_env.term.[[snd a]] b > |> f > |> Map.fold (fun s k _ -> Map.remove k s) rec_term > |> fun rec_term -> RawOpen(r,a,b,term rec_term c) > | RawApply(r,a,b) -> > let q = RawApply(r,f a,f b) > match module_type_apply_args.TryGetValue(x) with > | true, typevars -> List.fold (fun a b -> > RawApply(r,a,RawType(r,t_to_rawtexpr r [[]] b))) q typevars > | _ -> q > | RawIfThenElse(r,a,b,c) -> RawIfThenElse(r,f a,f b,f c) > | RawIfThen(r,a,b) -> RawIfThen(r,f a,f b) > | RawPair(r,a,b) -> RawPair(r,f a,f b) > | RawSeq(r,a,b) -> RawSeq(r,f a,f b) > | RawHeapMutableSet(r,a,b,c) -> RawHeapMutableSet(r,f a,List.map f > b,f c) > | RawMacro(r,l) -> > let l = l |> List.map (function RawMacroTerm(r,x) -> > RawMacroTerm(r,f x) | x -> x ) > RawAnnot(r,RawMacro(r,l),annot r x) > | RawArray(r,a) -> RawAnnot(r,RawArray(r,List.map f a),annot r x) > and pattern rec_term x' = > let mutable rec_term = rec_term > let rec f = function > | PatFilledDefaultValue _ -> failwith "Compiler error: > PatDefaultValueFilled should not appear in fill." > | PatValue _ | PatSymbol _ | PatE _ | PatB _ as x -> x > | PatVar(r,name) as x -> rec_term <- Map.remove name rec_term; x > | PatDyn(r,a) -> PatDyn(r,f a) > | PatUnbox(r,q,a) -> PatUnbox(r,q,f a) > | PatExists(r,q,a) -> PatExists(r,q,f a) > | PatAnnot(_,a,_) -> f a > | PatPair(r,a,b) -> PatPair(r,f a,f b) > | PatRecordMembers(r,a) -> > let a = a |> List.map (function > | PatRecordMembersSymbol(a,b) -> > PatRecordMembersSymbol(a,f b) > | PatRecordMembersInjectVar(a,b) -> > PatRecordMembersInjectVar(a,f b) > ) > PatRecordMembers(r,a) > | PatOr(r,a,b) -> PatOr(r,f a,f b) > | PatAnd(r,a,b) -> PatAnd(r,f a,f b) > | PatDefaultValue(r,a) as x -> PatFilledDefaultValue(r,a,annot r > x) > | PatWhen(r,a,b) -> PatWhen(r,f a,term rec_term b) > | PatNominal(r,a,b,c) -> PatNominal(r,a,b,f c) > | PatArray(r,a) -> PatArray(r,List.map f a) > rec_term, f x' > > let x = fill_foralls r rec_term expr > assert (0 = errors.Count) > x > > let fresh_kind () = KindMetavar {contents'=None} > let fresh_var'' x = TyMetavar (x, ref None) > let fresh_var' scope kind = fresh_var'' {scope=scope; constraints=Set.empty; > kind=kind} > let fresh_subst_var scope cons kind = fresh_var'' {scope=scope; > constraints=cons; kind=kind} > let forall_subst_all scope x = > let rec loop m x = > match visit_t x with > | TyForall(a,b) -> > let v = fresh_subst_var scope a.constraints a.kind > let type_apply_args,b = loop ((a, v) :: m) b > v :: type_apply_args, b > | x -> [[]], subst m x > loop [[]] x > > let exists_subst_term scope (l : Var list, body) = > let vars = l |> List.map (fun a -> fresh_subst_var scope a.constraints > a.kind) > vars, subst (List.zip l vars) body > > let assert_exists_hasnt_metavars r vars = > if List.exists has_metavars vars then errors.Add(r, > ExistsShouldntHaveMetavars vars) > > let generalize r scope (forall_vars : Var list) (body : T) = > let h = HashSet(HashIdentity.Reference) > List.iter (h.Add >> ignore) forall_vars > let generalized_metavars = ResizeArray() > let rec replace_metavars x = > let f = replace_metavars > match x with > | TyVar (_,{contents=Some x}) > | TyMetavar(_,{contents=Some x}) -> f x > | TyMetavar(x, link) when scope = x.scope -> > let v = tyvar {scope=x.scope; constraints=x.constraints; > kind=kind_force x.kind; name=autogen_name_in_fun > autogened_forallvar_count_in_funs} > autogened_forallvar_count_in_funs <- > autogened_forallvar_count_in_funs+1 > link.Value <- Some v > replace_metavars v > // This scheme with the HashSet is so generalize works for mutually > recursive statements. > | TyVar (v,_) -> if scope = v.scope && h.Add(v) then > generalized_metavars.Add(v) > | TyMetavar _ | TyNominal _ | TyB | TyLit _ | TyPrim _ | TySymbol _ > -> () > | TyPair(a,b) | TyApply(a,b,_) | TyFun(a,b,_) -> f a; f b > | TyUnion(a,_) -> Map.iter (fun _ -> snd >> f) a > | TyRecord a -> Map.iter (fun _ -> f) a > | TyExists(v,a) -> List.iter (h.Add >> ignore) v; f a > | TyForall(v,a) -> (h.Add >> ignore) v; f a > | TyComment(_,a) | TyLayout(a,_) | TyArray a -> f a > | TyMacro a -> List.iter (function TMLitVar a | TMVar a -> f a | > TMText _ -> ()) a > | TyModule _ | TyInl _ -> () > > let f x s = TyForall(x,s) > replace_metavars body > let x = Seq.foldBack f generalized_metavars body |> List.foldBack f > forall_vars |> term_subst > if List.isEmpty forall_vars = false then assert_foralls_used errors r x > x > > let gadt_extract scope (v : T) = > let forall_subst_all_gadt x = > let rec loop m x = > match visit_t x with > | TyForall(a,b) -> > let v = tyvar {a with name=autogen_name_in_typecase > autogened_forallvar_count_in_typecase; scope=scope} > autogened_forallvar_count_in_typecase <- > autogened_forallvar_count_in_typecase+1 > let type_apply_args,b = loop ((a, v) :: m) b > v :: type_apply_args, b > | x -> [[]], subst m x > loop [[]] x > let forall_vars,v = forall_subst_all_gadt v > match v with > | TyFun(a,b,_) -> forall_vars,a,b > | b -> forall_vars,TyB,b > > let inline unify_kind' er r got expected = > let rec loop (a'',b'') = > match visit_tt a'', visit_tt b'' with > | KindType, KindType -> () > | KindFun(a,a'), KindFun(b,b') -> loop (a,b); loop (a',b') > | KindMetavar a, KindMetavar b & b' -> if a <> b then a.contents' <- > Some b' > | KindMetavar link, b | b, KindMetavar link -> link.contents' <- > Some b > | _ -> raise (InferTypeErrorException [[r, er (got, expected)]]) > loop (got, expected) > let unify_kind r got expected = try unify_kind' KindError r got expected > with :? InferTypeErrorException as e -> errors.AddRange e.Data0 > let unify_gadt (gadt_links : T option ref ResizeArray option) (r : VSCRange) > (got : T) (expected : T) : unit = > let unify_kind got expected = unify_kind' KindError r got expected > let er () = raise (InferTypeErrorException [[r, TermError(got, > expected)]]) > > let rec constraint_process (con : Constraint Set) b = > let unify_kind got expected = unify_kind' KindErrorInConstraint r > got expected > let body = function > | CUInt, TyPrim (UInt8T | UInt16T | UInt32T | UInt64T) > | CSInt, TyPrim (Int8T | Int16T | Int32T | Int64T) > | CInt, TyPrim (UInt8T | UInt16T | UInt32T | UInt64T | Int8T | > Int16T | Int32T | Int64T) > | CFloat, TyPrim (Float32T | Float64T) > | CNumber, TyPrim (UInt8T | UInt16T | UInt32T | UInt64T | Int8T > | Int16T | Int32T | Int64T | Float32T | Float64T) > | CPrim, TyPrim _ > | CSymbol, TySymbol _ > | CRecord, TyRecord _ -> [[]] > | con, TyMetavar(x,_) -> x.constraints <- Set.add con > x.constraints; [[]] > | CPrototype prot & con, x -> > match type_apply_split x with > | TyNominal ins, x' -> > match Map.tryFind (prot,ins) > top_env.prototypes_instances with > | Some cons -> > try List.fold2 (fun ers con x -> List.append > (constraint_process con (visit_t x)) ers) [[]] cons x' > with :? System.ArgumentException -> [[]] // This > case can occur due when kind application overflows in a previous expression. > | None -> [[InstanceNotFound(prot,ins)]] > | TyMetavar _ & x, _ -> > [[PrototypeConstraintCannotPropagateToMetavar(prot,x)]] > | TyVar _ & x, _ -> > [[PrototypeConstraintCannotPropagateToVar(prot,x)]] > | _ -> [[ConstraintError(con,x)]] > | con, x -> [[ConstraintError(con,x)]] > > match b with > | TyVar (_,{contents=Some x}) -> constraint_process con x > | TyVar (b,_) -> if con.IsSubsetOf b.constraints = false then > [[ForallVarConstraintError(b.name,con,b.constraints)]] else [[]] > | b -> > let b_kind = tt top_env b > Set.fold (fun ers con -> > unify_kind b_kind (constraint_kind top_env con) > List.append (body (con,b)) ers > ) [[]] con > > // Does occurs checking for recursive metavariables. > // Does scope checking in forall vars. > let validate_mvar_unification i x = > let nested_tvars = HashSet(HashIdentity.Reference) > let rec f x = > match visit_t x with > | TyModule _ | TyNominal _ | TyB | TyLit _ | TyPrim _ | TySymbol > _ -> () > | TyMacro a -> a |> List.iter (function TMText _ -> () | > TMLitVar a | TMVar a -> f a) > | TyForall(v,a) | TyInl(v,a) -> > let _ = nested_tvars.Add(v) > f a > let _ = nested_tvars.Remove(v) > () > | TyExists(v,a) -> > v |> List.iter (nested_tvars.Add >> ignore) > f a > v |> List.iter (nested_tvars.Remove >> ignore) > | TyComment(_,a) | TyArray a -> f a > | TyApply(a,b,_) | TyFun(a,b,_) | TyPair(a,b) -> f a; f b > | TyUnion(l,_) -> Map.iter (fun _ -> snd >> f) l > | TyRecord l -> Map.iter (fun _ -> f) l > | TyVar(b,_) -> if nested_tvars.Contains b = false && i.scope < > b.scope then raise (InferTypeErrorException > [[r,TypeVarScopeError(b.name,got,expected)]]) > | TyMetavar(x,_) -> if i = x then raise (InferTypeErrorException > [[r,RecursiveMetavarsNotAllowed(got,expected)]]) elif i.scope < x.scope then > x.scope <- i.scope > | TyLayout(a,_) -> f a > f x > > // Does occurs checking for recursive type variables. > let rec validate_tvar_unification i x = > let f = validate_tvar_unification i > match visit_t x with > | TyMetavar _ | TyModule _ | TyNominal _ | TyB | TyLit _ | TyPrim _ > | TySymbol _ -> () > | TyMacro a -> a |> List.iter (function TMText _ -> () | TMLitVar a > | TMVar a -> f a) > | TyExists(_,a) | TyComment(_,a) | TyForall(_,a) | TyInl(_,a) | > TyArray a -> f a > | TyApply(a,b,_) | TyFun(a,b,_) | TyPair(a,b) -> f a; f b > | TyUnion(l,_) -> Map.iter (fun _ -> snd >> f) l > | TyRecord l -> Map.iter (fun _ -> f) l > | TyVar(x,_) -> if i = x then raise (InferTypeErrorException > [[r,RecursiveTypevarsNotAllowed(got,expected)]]) > | TyLayout(a,_) -> f a > > let rec loop (a'',b'') = > match visit_t a'', visit_t b'' with > | TyComment(_,a), b | a, TyComment(_,b) -> loop (a,b) > | TyMetavar(a,link), TyMetavar(b,_) & b' -> > if a <> b then > unify_kind a.kind b.kind > b.scope <- min a.scope b.scope > b.constraints <- a.constraints + b.constraints > link.Value <- Some b' > | TyMetavar(a,link), b | b, TyMetavar(a,link) -> > validate_mvar_unification a b > unify_kind a.kind (tt top_env b) > match constraint_process a.constraints b with > | [[]] -> link.Value <- Some b > | constraint_errors -> raise (InferTypeErrorException (List.map > (fun x -> r,x) constraint_errors)) > | TyVar (a,_), TyVar (b,_) when a = b -> () > | TyVar (a,link), b | b, TyVar (a,link) when gadt_links.IsSome -> > validate_tvar_unification a b > unify_kind a.kind (tt top_env b) > match constraint_process a.constraints b with > | [[]] -> link.Value <- Some b; gadt_links.Value.Add(link) > | constraint_errors -> raise (InferTypeErrorException (List.map > (fun x -> r,x) constraint_errors)) > | TyFun(a,a',ta), TyFun(b,b',tb) when ta = tb -> loop (a,b); loop > (a',b') > | TyPair(a,a'), TyPair(b,b') -> loop (a,b); loop (a',b') > | TyApply(a,a',_), TyApply(b,b',_) -> loop (a',b'); loop (a,b) > | TyUnion(l,q), TyUnion(l',q') -> > if q = q' then > let a,b = Map.toArray l, Map.toArray l' > if a.Length <> b.Length then er () > else Array.iter2 (fun (ka,a) (kb,b) -> if ka = kb && fst a = > fst b then loop (snd a,snd b) else er()) a b > else raise (InferTypeErrorException > [[r,UnionTypesMustHaveTheSameLayout]]) > | TyRecord l, TyRecord l' -> > let a,b = Map.toArray l, Map.toArray l' > if a.Length <> b.Length then er () > else > let a = a |> Array.sortBy (fun ((_,k),_) -> k) > let b = b |> Array.sortBy (fun ((_,k),_) -> k) > Array.iter2 (fun (ka,a) (kb,b) -> > if (ka |> snd) = (kb |> snd) > then loop (a,b) > else er() > ) a b > | TyNominal i, TyNominal i' when i = i' -> () > | TyB, TyB -> () > | TyPrim x, TyPrim x' when x = x' -> () > | TyLit a, TyLit b when a = b -> () > | TySymbol x, TySymbol x' when x = x' -> () > | TyArray a, TyArray b -> loop (a,b) > // Note: Unifying these 3 only makes sense if the `expected` is > fully inferred already. > | TyExists(a,b), TyExists(a',b') when > List.length a = List.length a' > && List.forall2 (fun (a : Var) (a' : Var) -> a.kind = > a'.kind && a.constraints = a'.constraints) a a' -> > loop (b, subst (List.map2 (fun a a' -> a', tyvar a) a a') b') > | TyForall(a,b), TyForall(a',b') > | TyInl(a,b), TyInl(a',b') when a.kind = a'.kind && a.constraints = > a'.constraints -> loop (b, subst [[a',tyvar a]] b') > | TyMacro a, TyMacro b -> > List.iter2 (fun a b -> > match a,b with > | TMText a, TMText b when System.Object.ReferenceEquals(a,b) > || a = b -> () > | TMVar a, TMVar b -> loop(a,b) > | _ -> er () > ) a b > | TyLayout(a,a'), TyLayout(b,b') when a' = b' -> loop (a,b) > | _ -> er () > > try loop (got, expected) > with :? InferTypeErrorException as e -> errors.AddRange e.Data0 > > let unify range got expected = unify_gadt None range got expected > > let apply_record r s l x = > match visit_t x with > | TySymbol x -> > match l |> Map.tryPick (fun (_, k) v -> if k = x then Some v else > None) with > | Some x -> > let com = match x with TyComment(com,_) -> com | _ -> "" > unify r s x > hover_types.AddHover (r,(x,com)) > | None -> errors.Add(r,RecordIndexFailed x) > | x -> errors.Add(r,ExpectedSymbolAsRecordKey x) > > let assert_bound_vars env a = > let keys_of m = Map.fold (fun s k _ -> Set.add k s) Set.empty m > validate_bound_vars (loc_env top_env) env.constraints (keys_of env.term) > (keys_of env.ty) (Choice1Of2 a) |> errors.AddRange > > let fresh_var scope = fresh_var' scope KindType > > let v_cons env a = Map.tryFind a env |> Option.orElseWith (fun () -> > Map.tryFind a top_env.constraints) > let v env top_env a = Map.tryFind a env |> Option.orElseWith (fun () -> > Map.tryFind a top_env) > let v_term env a = v env.term top_env.term a |> Option.map (function > TyComment(com,x) -> com, visit_t x | x -> "", visit_t x) > let v_ty env a = v env.ty top_env.ty a > > let typevar_to_var scope cons (((_,(name,kind)),constraints) : TypeVar) : > Var = > let rec typevar = function > | RawKindWildcard -> fresh_kind() > | RawKindStar -> KindType > | RawKindFun(a,b) -> KindFun(typevar a, typevar b) > let kind = typevar kind > let cons = > constraints |> List.choose (fun (r,x) -> > match v_cons cons x with > | Some (M _) -> errors.Add(r,ExpectedConstraintInsteadOfModule); > None > | Some (C x) -> unify_kind r kind (constraint_kind top_env x); > Some x > | None -> errors.Add(r,UnboundVariable x); None > ) |> Set.ofList > > {scope=scope; constraints=cons; kind=kind_force kind; name=name} > > let typevars scope env (l : TypeVar list) = > List.mapFold (fun s x -> > let v = typevar_to_var scope env.constraints x > v, Map.add v.name (tyvar v) s > ) env.ty l > > let rec term scope env s x = term' scope false env s x > and term' scope is_in_left_apply (env : InferEnv) s x = > let f = term scope env > let f' x = let v = fresh_var scope in f v x; visit_t v > let f'' x = let v = fresh_var scope in term' scope true env v x; visit_t > v > let inline rawv (r,name,is_tvar_applied) = > match v_term env name with > | None -> errors.Add(r,UnboundVariable name) > | Some (_,TySymbol "<real>") -> errors.Add(r,RealFunctionInTopDown) > | Some (com,TyModule _ & m) when is_in_left_apply = false -> > hover_types.AddHover(r,(m,com)) > errors.Add(r,ModuleMustBeImmediatelyApplied) > | Some (com,a) -> > if is_tvar_applied then > match a with TyForall _ -> annotations.Add(x,(r,s)) | _ -> > () > let f a = let l,v = forall_subst_all scope a in unify r s v; > l > let l = f a > hover_types.AddHover(r,(s,com)) > type_apply_args.Add(name,(l,f)) > else > unify r s a > hover_types.AddHover(r,(s,com)) > let match_clause (q,w) (a,b) = > let gadt_links, gadt_typecases', (scope, env) = pattern scope env q > a > term scope env w b > dispose_gadt_links gadt_links > gadt_typecases.Add(b,gadt_typecases') > match x with > | RawB r -> unify r s TyB > | RawV(r,a,is_tvar_applied) -> rawv (r,a,is_tvar_applied) > | RawDefaultLit(r,_) -> unify r s (fresh_subst_var scope (Set.singleton > CNumber) KindType); hover_types.AddHover(r,(s,"")); annotations.Add(x,(r,s)) > | RawLit(r,a) -> unify r s (lit a) > | RawSymbol(r,x) -> unify r s (TySymbol x) > | RawIfThenElse(_,cond,tr,fl) -> f (TyPrim BoolT) cond; f s tr; f s fl > | RawIfThen(r,cond,tr) -> f (TyPrim BoolT) cond; unify r s TyB; f TyB tr > | RawPair(r,a,b) -> > let q,w = fresh_var scope, fresh_var scope > unify r s (TyPair(q, w)) > f q a; f w b > | RawSeq(_,a,b) -> f TyB a; f s b > | RawReal(_,a) -> assert_bound_vars env a > | RawOp(_,_,l) -> List.iter (assert_bound_vars env) l > | RawJoinPoint(r,None,a,_) -> annotations.Add(x,(r,s)); f s a > | RawJoinPoint(r,Some _,a,_) -> > unify r s (TyPair(TyPrim Int32T, TySymbol "tuple_of_free_vars")) > let s = fresh_var scope > annotations.Add(x,(r,s)) > f s a > | RawApply(r,a',b) -> > let rec loop = function > | TyNominal _ | TyApply _ as a -> > match type_apply_split a with > | TyNominal i, l -> > let n = top_env.nominals.[[i]] > match n.body with > | TyUnion _ -> errors.Add(r,UnionsCannotBeApplied) > | _ -> > match list_try_zip n.vars l with > | Some l -> loop (subst l n.body) > | None -> errors.Add(r,MalformedNominal) > | _ -> errors.Add(r,ExpectedNominalInApply a) > | TyLayout(a,_) -> > match visit_t a with > | TyRecord l -> apply_record r s l (f' b) > | a -> errors.Add(r,ExpectedRecordInsideALayout a) > | TyRecord l -> apply_record r s l (f' b) > | TyModule l -> > match f' b with > | TySymbol n -> > match Map.tryFind n l with > | Some (TyModule _ as a) -> > if is_in_left_apply then > match b with RawSymbol(r,_) -> > hover_types.AddHover(r,(a,"")) | _ -> () > unify r s a > else errors.Add(r,ModuleMustBeImmediatelyApplied) > | Some a' -> > let typevars,a = forall_subst_all scope a' > if List.isEmpty typevars = false then > annotations.Add(x,(r,s)) > module_type_apply_args.Add(x,typevars) > unify r s a > match b with > | RawSymbol(r,_) -> > let com = match a' with TyComment(com,_) -> com > | _ -> "" > hover_types.AddHover(r,(a,com)) > | _ -> () > | None -> errors.Add(r,ModuleIndexFailed n) > | b -> errors.Add(r,ExpectedSymbolAsModuleKey b) > | TyFun(domain,range,_) -> unify (range_of_expr a') range s; f > domain b > | a -> let v = fresh_var scope in unify (range_of_expr a') a > (TyFun(v,s,FT_Vanilla)); f v b > loop (f'' a') > | RawAnnot(r,a,b) -> ty_init scope env s b; f s a > | RawOpen(_,(r,a),l,on_succ) -> > match module_openInfer (Some hover_types) (loc_env top_env) env.ty r > a l with > | Result.Ok x -> > let combine big small = Map.foldBack Map.add small big > term scope {term = combine env.term x.term; ty = combine env.ty > x.ty; constraints = combine env.constraints x.constraints} s on_succ > | Result.Error e -> errors.Add(e) > | RawRecordWith(r,l,withs,withouts) -> > let i = errors.Count > let withouts,fields = > List.foldBack (fun x (l,s as state) -> > match x with > | RawRecordWithoutSymbol(r,a) -> {|range=r; symbol = a|} :: > l, Set.add a s > | RawRecordWithoutInjectVar(r,a) -> > match v_term env a with > | Some (com, TySymbol a & x) -> > hover_types.AddHover(r,(x,com)); {|range=r; symbol = a|} :: l, Set.add a s > | Some (_,x) -> errors.Add(r, ExpectedSymbolAsRecordKey > x); state > | None -> errors.Add(r, UnboundVariable a); state > ) withouts ([[]],Set.empty) > let withs,_ = > List.foldBack (fun x (l,s as state) -> > let with_symbol ((r,a),b) = {|range=r; symbol = a; > is_blocked=Set.contains a s; is_modify=false; var=fresh_var scope; body=b|} :: > l, Set.add a s > let with_symbol_modify ((r,a),b) = {|range=r; symbol = a; > is_blocked=Set.contains a s; is_modify=true; var=TyFun(fresh_var scope,fresh_var > scope,FT_Vanilla); body=b|} :: l, Set.add a s > let inline with_inject next ((r,a),b) = > match v_term env a with > | Some (com, TySymbol a & x) -> > hover_types.AddHover(r,(x,com)); next ((r,a),b) > | Some (_, x) -> errors.Add(r, ExpectedSymbolAsRecordKey > x); f' b |> ignore; state > | None -> errors.Add(r, UnboundVariable a); f' b |> > ignore; state > match x with > | RawRecordWithSymbol(a,b) -> with_symbol (a,b) > | RawRecordWithSymbolModify(a,b) -> with_symbol_modify (a,b) > | RawRecordWithInjectVar(a,b) -> with_inject with_symbol > (a,b) > | RawRecordWithInjectVarModify(a,b) -> with_inject > with_symbol_modify (a,b) > ) withs ([[]],fields) > > let eval m = > let m = (m,withs) ||> List.fold (fun m x -> > if x.is_modify then > let i, q = > match m |> Map.tryPick (fun (i, k) v -> if k = > x.symbol then Some (i, v) else None) with > | Some q -> q > | None -> errors.Add(x.range,RecordIndexFailed > x.symbol); m.Count, fresh_var scope > let w = fresh_var scope > unify x.range (TyFun(q,w,FT_Vanilla)) x.var > f x.var x.body > Map.add (i, x.symbol) w m > else > f x.var x.body > let i = > m > |> Map.tryPick (fun (i, k) v -> if k = x.symbol then > Some i else None) > |> Option.defaultValue m.Count > Map.add (i, x.symbol) x.var m > ) > withouts |> List.fold (fun m x -> m |> Map.filter (fun (_, k) _ > -> k <> x.symbol)) m > > let bind s = withs |> List.iter (fun x -> > if x.is_blocked = false then > if x.is_modify then > s > |> Map.tryPick (fun (i, k') v -> if k' = x.symbol then > Some (i, v) else None) > |> Option.iter (fun (_, k) -> unify x.range x.var > (TyFun(fresh_var scope,k,FT_Vanilla))) > else > s > |> Map.tryPick (fun (i, k') v -> if k' = x.symbol then > Some (i, v) else None) > |> Option.iter (fun (_, k) -> k |> unify x.range x.var) > ) > > let rec tail' m = function > | x :: xs -> > match f' x with > | TySymbol k -> > match m |> Map.tryPick (fun (i, k') v -> if k' = k then > Some (i, v) else None) with > | Some (i, m) -> > match visit_t m with > | TyRecord m -> tail' m xs > | m -> errors.Add(range_of_expr x, > ExpectedRecordAsResultOfIndex m); eval Map.empty > | _ -> errors.Add(range_of_expr x, RecordIndexFailed k); > eval Map.empty > |> fun v -> > let i = m |> Map.tryPick (fun (i, k') v -> if k' = k > then Some (i, v) else None) > match i with > | Some (i, _) -> Map.add (i, k) (TyRecord v) m > | None -> Map.add (m.Count, k) (TyRecord v) m > | TyMetavar _ -> errors.Add(range_of_expr x, > MetavarsNotAllowedInRecordWith); eval Map.empty > | a -> errors.Add(range_of_expr x, > ExpectedSymbolInRecordWith a); eval Map.empty > | [[]] -> eval m > > let rec tail (m,s) = function > | x :: xs -> > match f' x with > | TySymbol k -> > match > m |> Map.tryPick (fun (i, k') v -> if k' = k then > Some (i, v) else None), > s |> Map.tryPick (fun (i, k') v -> if k' = k then > Some (i, v) else None) > with > | Some (i,m), Some (_i',s) -> > match visit_t m, visit_t s with > | TyRecord m, TyRecord s -> i, tail (m,s) xs > | TyRecord m, _ -> i, tail' m xs > | m, _ -> errors.Add(range_of_expr x, > ExpectedRecordAsResultOfIndex m); i, eval Map.empty > | Some (i,m), None -> > match visit_t m with > | TyRecord m -> i, tail' m xs > | m -> errors.Add(range_of_expr x, > ExpectedRecordAsResultOfIndex m); i, eval Map.empty > | _ -> errors.Add(range_of_expr x, RecordIndexFailed k); > i, eval Map.empty > |> fun (i,v) -> Map.add (i,k) (TyRecord v) m > | TyMetavar _ -> errors.Add(range_of_expr x, > MetavarsNotAllowedInRecordWith); eval Map.empty > | a -> errors.Add(range_of_expr x, > ExpectedSymbolInRecordWith a); eval Map.empty > | [[]] -> bind s; eval m > > match l with > | [[]] -> > match visit_t s with TyRecord s -> bind s | _ -> () > eval Map.empty > | m :: l -> > match f' m, visit_t s with > | TyRecord m, TyRecord s -> tail (m,s) l > | TyRecord m, _ -> tail' m l > | TyMetavar _, _ -> errors.Add(range_of_expr x, > MetavarsNotAllowedInRecordWith); eval Map.empty > | a,_ -> errors.Add(range_of_expr x, ExpectedRecord a); eval > Map.empty > |> fun v -> if errors.Count = i then unify r (TyRecord v) s > | RawExists(r,(r',l),body) -> > match visit_t s with > | TyExists(type_vars,type_body) -> > let vars, s = exists_subst_term scope (type_vars,type_body) > l |> Option.iter (fun l -> > let l1,l2 = vars.Length, l.Length > if l1 = l2 then List.iter2 (ty_init scope env) vars l > else errors.Add(r', > UnexpectedNumberOfArgumentsInExistsBody(l1,l2)) > ) > term scope env s body > assert_exists_hasnt_metavars (range_of_expr x) vars > exists_vars.Add(x,vars) > | s -> errors.Add(r, ExpectedExistentialInTerm s); f (fresh_var > scope) body > | RawFun(r,l) -> > annotations.Add(x,(r,s)) > let q,w = fresh_var scope, fresh_var scope > unify r s (TyFun(q,w,FT_Vanilla)) > List.iter (match_clause (q,w)) l > | RawForall _ -> failwith "Compiler error: Should be handled in let > statements." > | RawMatch(_,(RawForall _ | RawFun _) & body,[[PatVar(r,name), > on_succ]]) -> term scope (inl scope env ((r, name), body)) s on_succ > | RawRecBlock(_,l',on_succ) -> term scope (rec_block scope env l') s > on_succ > | RawMatch(_,body,l) -> > let body_var = fresh_var scope > f body_var body > List.iter (match_clause (body_var,s)) l > | RawMissingBody r -> errors.Add(r,MissingBody) > | RawMacro(r,a) -> > annotations.Add(x,(r,s)) > List.iter (function > | RawMacroText _ -> () > | RawMacroTerm(_,a) -> term scope env (fresh_var scope) a > | RawMacroType(_,a) | RawMacroTypeLit(_,a) -> ty_init scope env > (fresh_var scope) a > ) a > | RawHeapMutableSet(r,a,b,c) -> > unify r s TyB > try let v = fresh_var scope > let i = errors.Count > f v a > match visit_t v with > | TyMetavar _ -> raise (InferTypeErrorException [[r, > LayoutSetMustBeAnnotated]]) > | TyLayout(v,lay) -> > match lay with > | HeapMutable | StackMutable -> > if i <> errors.Count then raise (InferTypeErrorException > [[]]) > let b = List.map (fun x -> range_of_expr x, f' x) b > List.fold (fun (r,a') (r',b') -> > match visit_t a' with > | TyRecord a -> > match b' with > | TySymbol b -> > match a |> Map.tryPick (fun (_, k) v -> if k > = b then Some v else None) with > | Some x -> r', x > | _ -> raise (InferTypeErrorException [[r, > RecordIndexFailed b]]) > | b -> raise (InferTypeErrorException [[r', > ExpectedSymbol' b]]) > | a -> raise (InferTypeErrorException [[r, > ExpectedRecord a]]) > ) (range_of_expr a, v) b |> snd > | Heap -> raise (InferTypeErrorException [[r, > ExpectedMutableLayout v]]) > | v -> raise (InferTypeErrorException [[r, ExpectedMutableLayout > v]]) > with :? InferTypeErrorException as e -> errors.AddRange e.Data0; > fresh_var scope > |> fun v -> f v c > | RawArray(r,a) -> > annotations.Add(x,(r,s)) > let v = fresh_var scope > unify r s (TyArray v) > List.iter (f v) a > | RawFilledForall _ -> failwith "Compiler error: Should not manifest > during type inference." > | RawType _ -> failwith "Compiler error: RawType should not appear in > the top down segment." > | RawTypecase _ -> failwith "Compiler error: `typecase` should not > appear in the top down segment." > and inl scope env ((r, name), body) = > let scope = scope + 1 > let vars,body = foralls_get body > vars |> List.iter (fun ((r,(name,_)),_) -> if Map.containsKey name > env.ty then errors.Add(r,ShadowedForall)) > let vars,env_ty = typevars scope env vars > let body_var = fresh_var scope > term scope {env with ty = env_ty} body_var body > let t = generalize r scope vars body_var > generalized_statements.Add(body,t) > hover_types.AddHover(r,(t,"")) > {env with term = Map.add name t env.term } > and rec_block scope env l' = > let rec term_annotations scope env x = > let f t = > let i = errors.Count > let v = fresh_var scope > ty_init scope env v t > if i = errors.Count && has_metavars v then > errors.Add(range_of_texpr t, RecursiveAnnotationHasMetavars v) > v > match x with > | RawFun(_,[[(PatAnnot(_,_,t) | PatDyn(_,PatAnnot(_,_,t))),body]]) > -> TyFun(f t, term_annotations scope env body,FT_Vanilla) > | RawFun(_,[[pat,body]]) -> errors.Add(range_of_pattern pat, > ExpectedAnnotation); TyFun(fresh_var scope, term_annotations scope env > body,FT_Vanilla) > | RawFun(r,_) -> errors.Add(r, ExpectedSinglePattern); > TyFun(fresh_var scope, fresh_var scope, FT_Vanilla) > | RawJoinPoint(_,_,RawAnnot(_,_,t),_) | RawAnnot(_,_,t) -> f t > | x -> errors.Add(range_of_expr x,ExpectedAnnotation); fresh_var > scope > let scope = scope + 1 > let has_foralls = List.exists (function (_,RawForall _) -> true | _ -> > false) l' > let l,m = > if has_foralls then > List.mapFold (fun s ((r,name),body) -> > let vars,body = foralls_get body > vars |> List.iter (fun x -> if Map.containsKey (typevar_name > x) env.ty then errors.Add(range_of_typevar x,ShadowedForall)) > let vars, env_ty = typevars scope env vars > let body_var = term_annotations scope {env with ty = env_ty} > body > let term env = term scope {env with ty = env_ty} body_var > body > let gen env : InferEnv = > let t = generalize r scope vars body_var > generalized_statements.Add(body,t) > hover_types.AddHover(r,(t,"")) > {env with term = Map.add name t env.term} > let ty = List.foldBack (fun x s -> TyForall(x,s)) vars > body_var |> term_subst > (term, gen), Map.add name ty s > ) env.term l' > else > List.mapFold (fun s ((r,name),body) -> > let body_var = fresh_var scope > let term env = term scope env body_var body > let gen env : InferEnv = > let t = generalize r scope [[]] body_var > generalized_statements.Add(body,t) > hover_types.AddHover(r,(t,"")) > {env with term = Map.add name t env.term} > (term, gen), Map.add name body_var s > ) env.term l' > let _ = > let env = {env with term = m} > List.iter (fun (term, _) -> term env) l > List.fold (fun env (_, gen) -> gen env) env l > and ty_init scope env s x = > ty scope env s x > assert_foralls_used errors (range_of_texpr x) s > and ty scope env s x = ty' scope false env s x > and ty' scope is_in_left_apply (env : InferEnv) s x = > let f s x = ty scope env s x > match x with > | RawTTypecase _ -> failwith "Compiler error: Type level typecase should > not appear in the top down segment." > | RawTWildcard r -> hover_types.AddHover(r,(s,"")) > | RawTArray(r,a) -> > let v = fresh_var scope > unify r s (TyArray v) > f v a > | RawTVar(r,x) -> > match v_ty env x with > | Some (TyModule _ & m) when is_in_left_apply = false -> > hover_types.AddHover(r,(m,"")); errors.Add(r,ModuleMustBeImmediatelyApplied) > | Some x -> unify r s x; hover_types.AddHover(r,(x,"")) > | None -> errors.Add(r, UnboundVariable x) > | RawTB r -> unify r s TyB > | RawTLit(r,x) -> unify r s (TyLit x) > | RawTSymbol(r,x) -> unify r s (TySymbol x) > | RawTPrim(r,x) -> unify r s (TyPrim x) > | RawTPair(r,a,b) -> > let q,w = fresh_var scope, fresh_var scope > unify r s (TyPair(q,w)) > f q a; f w b > | RawTFun(r,a,b,t) -> > let q,w = fresh_var scope, fresh_var scope > unify r s (TyFun(q,w,t)) > f q a; f w b > | RawTRecord(r,l) -> > let l' = Map.map (fun _ _ -> fresh_var scope) l > unify r s (TyRecord l') > Map.iter (fun k s -> f s l.[[k]]) l' > | RawTUnion(r,l,lay,_) -> > let l' = Map.map (fun _ (is_gadt,_) -> is_gadt, fresh_var scope) l > unify r s (TyUnion(l',lay)) > Map.iter (fun k (is_gadt,s) -> let x = snd l.[[k]] in if is_gadt > then ty scope {env with ty = Map.empty} s x else f s x) l' > | RawTExists(r,a,b) -> > let a = List.map (typevar_to_var scope env.constraints) a > let body_var = fresh_var scope > ty scope {env with ty = List.fold (fun s a -> Map.add a.name (tyvar > a) s) env.ty a} body_var b > unify r s (TyExists(a, body_var)) > | RawTForall(r,a,b) -> > let a = typevar_to_var scope env.constraints a > let body_var = fresh_var scope > ty scope {env with ty = Map.add a.name (tyvar a) env.ty} body_var b > unify r s (TyForall(a, body_var)) > | RawTApply(r,a',b) -> > let f' b k x = let v = fresh_var' scope k in ty' scope b env v x; > visit_t v > match f' true (fresh_kind ()) a' with > | TyModule l -> > match f' false KindType b with > | TySymbol x -> > match Map.tryFind x l with > | Some (TyModule _ as a) -> > if is_in_left_apply then > unify r s a > match b with RawTSymbol(r,_) -> > hover_types.AddHover(r,(a,"")) | _ -> () > else errors.Add(r,ModuleMustBeImmediatelyApplied) > | Some a -> > unify r s a > match b with > | RawTSymbol(r,_) -> > let com = match a with TyComment(com,_) -> com | _ > -> "" > hover_types.AddHover(r,(a,com)) > | _ -> () > | None -> errors.Add(r,ModuleIndexFailed x) > | b -> errors.Add(r,ExpectedSymbolAsRecordKey b) > | TyInl(a,body) -> let v = fresh_var' scope a.kind in f v b; unify r > s (subst [[a,v]] body) > | a -> > let q,w = fresh_kind(), fresh_kind() > unify_kind (range_of_texpr a') (tt top_env a) (KindFun(q,w)) > let x = fresh_var' scope q > f x b > unify r s (TyApply(a,x,w)) > | RawTTerm(r,a) -> assert_bound_vars env a; unify r s (TySymbol > "<term>") > | RawTMacro(r,a) -> > List.map (function > | RawMacroText(_,a) -> TMText a > | RawMacroTerm _ -> failwith "Compiler error: Term vars should > never appear at the type level." > | RawMacroType(r,a) | RawMacroTypeLit(r,a) -> let v = fresh_var > scope in f v a; TMVar v > ) a > |> TyMacro |> unify r s > | RawTLayout(r,a,b) -> > let v = fresh_var scope > unify r s (TyLayout(v,b)) > f v a > | RawTFilledNominal _ -> failwith "Compiler error: RawTNominal should be > filled in by the inferencer." > | RawTMetaVar _ -> failwith "Compiler error: This particular metavar is > only for typecase's clauses. This happens during the bottom-up segment." > and pattern (scope : InferScope) (env : InferEnv) s a : T option ref > ResizeArray * (T * T list * T) ResizeArray * (InferScope * InferEnv) = > let gadt_links = ResizeArray() > let gadt_typecases = ResizeArray() > let term_vars = Dictionary(HashIdentity.Structural) > let ty_vars = Dictionary(HashIdentity.Structural) > let mutable scope = scope > let update_env () = > scope, > {env with > ty = (env.ty,ty_vars) ||> Seq.fold (fun s x -> Map.add x.Key > x.Value s) > term = (env.term,term_vars) ||> Seq.fold (fun s x -> Map.add > x.Key x.Value s) > } > let ho_make (i : GlobalId) (l : Var list) = > let h = TyNominal i > let l' = List.map (fun (x : Var) -> x, fresh_subst_var scope > x.constraints x.kind) l > List.fold (fun s (_,x) -> match tt top_env s with KindFun(_,k) -> > TyApply(s,x,k) | _ -> failwith "impossible") h l', l' > let rec ho_index x = > match visit_t x with > | TyApply(a,_,_) -> ho_index a > | TyNominal i -> ValueSome i > | _ -> ValueNone > let rec ho_fun x = > match visit_t x with > | TyFun(_,a,_) | TyForall(_,a) -> ho_fun a > | a -> ho_index a > let rec loop s x : unit = > let f = loop > match x with > | PatFilledDefaultValue _ -> failwith "Compiler error: > PatDefaultValueFilled should not appear during inference." > | PatB r -> unify r s TyB > | PatE r -> hover_types.AddHover(r,(s,"")) > | PatVar(r,a) -> > match term_vars.TryGetValue(a) with > | true, v -> unify r s v > | _ -> term_vars.Add(a,s) > hover_types.AddHover(r,(s,"")) > | PatDyn(_,a) -> f s a > | PatAnnot(_,a,b) -> ty_init scope env s b; f s a > | PatWhen(_,a,b) -> > f s a > let scope,env = update_env() > term scope env (TyPrim BoolT) b > | PatPair(r,a,b) -> > let q,w = fresh_var scope, fresh_var scope > unify r s (TyPair(q,w)) > loop q a; loop w b > | PatSymbol(r,a) -> unify r s (TySymbol a) > | PatOr(_,a,b) | PatAnd(_,a,b) -> loop s a; loop s b > | PatValue(r,a) -> unify r s (lit a) > | PatDefaultValue(r,_) -> > annotations.Add(x,(r,s)) > unify r s (fresh_subst_var scope (Set.singleton CNumber) > KindType) > hover_types.AddHover(r,(s,"")) > | PatRecordMembers(r,l) -> > let l = > List.choose (function > | PatRecordMembersSymbol((r,a),b) -> Some (a,b) > | PatRecordMembersInjectVar((r,a),b) -> > match v_term env a with > | Some (com,TySymbol a & x) -> > hover_types.AddHover(r,(x,com)); Some (a,b) > | Some (_,x) -> errors.Add(r, > ExpectedSymbolAsRecordKey x); None > | None -> errors.Add(r, UnboundVariable a); None > ) l > match visit_t s with > | TyRecord l' as s -> > let l, missing = > List.mapFoldBack (fun (a,b) missing -> > match l' |> Map.tryPick (fun (i, k) v -> if k = a > then Some (i, v) else None) with > | Some (_,x) -> (x,b), missing > | None -> (fresh_var scope,b), a :: missing > ) l [[]] > if List.isEmpty missing = false then errors.Add(r, > MissingRecordFieldsInPattern(s, missing)) > List.iter (fun (a,b) -> loop a b) l > | s -> > let l = > List.mapi (fun i (a,b) -> > let v = fresh_var scope > loop v b > (i, a), v > ) l > unify r s (l |> Map |> TyRecord) > | PatExists(r,l,p) -> > l |> List.iter (fun (r,name) -> if Map.containsKey name env.ty > then errors.Add(r,ShadowedExists)) > match visit_t s with > | TyExists(type_var_list,type_body) -> > if l.Length = type_var_list.Length then > scope <- scope + 1 > let vars = (l, type_var_list) ||> List.map2 (fun > (_,name) l -> > memoize ty_vars (fun name -> tyvar {l with > scope=scope; name=name}) name > ) > loop (subst (List.zip type_var_list vars) type_body) p > else > errors.Add(r, > UnexpectedNumberOfArgumentsInExistsPattern(l.Length,type_var_list.Length)) > | s -> errors.Add(r, ExpectedExistentialInPattern s) > | PatUnbox(r,name,a) -> > let assume i = > let n = top_env.nominals.[[i]] > match n.body with > | TyUnion(cases,_) -> > let x,m = ho_make i n.vars > unify r s x > match Map.tryPick (fun (_, name') v -> if name = name' > then Some v else None) cases with > | Some (is_gadt, v) -> > if is_gadt then > scope <- scope + 1 > let forall_vars,body,specialized_constructor = > gadt_extract scope v > gadt_typecases.Add(s, forall_vars, > specialized_constructor) > match a with PatE r' when r = r' -> () | _ -> > loop body a // This check for PatE is so the hovers for it don't overwrite the > main pattern. > unify_gadt (Some gadt_links) r s > specialized_constructor > else > match a with PatE r' when r = r' -> () | _ -> f > (subst m v) a > hover_types.AddHover(r,(s,"")) > | None -> > errors.Add(r,CasePatternNotFoundForType(i,name)); f (fresh_var scope) a > | _ -> errors.Add(r,NominalInPatternUnbox i); f (fresh_var > scope) a > match ho_index s with > | ValueSome i -> assume i > | ValueNone -> > match v_term env name with > | Some (_,x) -> > match ho_fun x with > | ValueSome i -> assume i > | ValueNone -> > errors.Add(r,CannotInferCasePatternFromTermInEnv x); f (fresh_var scope) a > | None -> errors.Add(r,CasePatternNotFound name); f > (fresh_var scope) a > | PatNominal(_,(r,name),l,a) -> > match v_ty env name with > | Some x -> > let rec loop r x = function > | (r,name) :: l -> > match x with > | TyModule x -> > match Map.tryFind name x with > | Some x -> loop r x l > | None -> errors.Add(r,ModuleIndexFailed name); > f (fresh_var scope) a > | _ -> > errors.Add(r,ExpectedModule x); f (fresh_var > scope) a > | [[]] -> > match ho_index x with > | ValueSome i -> > let n = top_env.nominals.[[i]] > match n.body with > | TyUnion _ -> > errors.Add(r,UnionInPatternNominal i); f (fresh_var scope) a > | _ -> let x,m = ho_make i n.vars in unify r s > x; f (subst m n.body) a > | ValueNone -> errors.Add(r,TypeInEnvIsNotNominal > x); f (fresh_var scope) a > loop r x l > | _ -> errors.Add(r,UnboundVariable name); f (fresh_var scope) a > | PatArray(r,a) -> > let v = fresh_var scope > unify r s (TyArray v) > List.iter (fun x -> loop v x) a > loop s a > gadt_links, gadt_typecases, update_env() > > let nominal_term global_id tt name vars v = > let constructor body = > let t,_ = List.fold (fun (a,k) b -> let k = trim_kind k in > TyApply(a,tyvar b,k),k) (TyNominal global_id,tt) vars > let x = match body with TyB -> t | _ -> TyFun(body,t,FT_Vanilla) > List.foldBack (fun var ty -> TyForall(var,ty)) vars x > match v with > | TyUnion(l,_) -> Map.fold (fun s (_,name) (is_gadt,v) -> Map.add name > (if is_gadt then v else constructor v) s) Map.empty l > | _ -> Map.add name (constructor v) Map.empty > > let psucc = Hopac.Job.thunk >> Hopac.Hopac.memo > let pfail = Hopac.Promise.Now.withFailure (System.Exception "Compiler error: > Tried to read from a FilledTop that has errors.") > > let top_env_nominal top_env (global_id : GlobalId) tt name vars v : TopEnv = > { top_env with > nominals_next_tag = max top_env.nominals_next_tag global_id.tag + 1 > nominals_aux = Map.add global_id {|kind=tt; name=name|} > top_env.nominals_aux > nominals = Map.add global_id {|vars=vars; body=v|} top_env.nominals > term = Map.foldBack Map.add (nominal_term global_id tt name vars v) > top_env.term > ty = Map.add name (TyNominal global_id) top_env.ty > } > > let rec typevar = function > | RawKindWildcard | RawKindStar -> KindType > | RawKindFun(a,b) -> KindFun(typevar a, typevar b) > let hovars (x : HoVar list) = > List.mapFold (fun s (_,(n,t)) -> > let v = {scope=0; kind=typevar t; name=n; constraints=Set.empty} > v, Map.add n (tyvar v) s > ) Map.empty x > > let scope = 0 > let bundle_nominal_rec l' = > let l,_ = > List.mapFold (fun i (_,name,vars,body) -> > let l,env = hovars vars > let tt = List.foldBack (fun (x : Var) s -> KindFun(x.kind,s)) l > KindType > (at_tag i,name,l,env,tt,body), i+1 > ) top_env.nominals_next_tag l' > > top_env <- > {top_env with > nominals_aux = (top_env.nominals_aux, l) ||> List.fold (fun s > (i,(_,name),_,_,tt,_) -> Map.add i {|name=name; kind=tt|} s) > ty = (top_env.ty, l) ||> List.fold (fun s (i,(_,name),_,_,_,_) > -> Map.add name (TyNominal i) s) > } > > List.fold (fun top_env (global_id,(r,name),vars,env_ty,tt,body) -> > let v = fresh_var scope > ty_init scope {term=Map.empty; ty=env_ty; constraints=Map.empty} v > body > let v = term_subst v > validate_nominal errors global_id body v > top_env_nominal top_env global_id tt name vars v > ) top_env_emptyInfer l > > match expr with > | BundleType(q,(r,name),vars',expr) -> > let vars,env_ty = hovars vars' > let v = fresh_var scope > ty_init scope {term=Map.empty; ty=env_ty; constraints=Map.empty} v expr > let t = List.foldBack (fun x s -> TyInl(x,s)) vars (term_subst v) > hover_types.AddHover(r,(t,"")) > if 0 = errors.Count then psucc (fun () -> FType(q,(r,name),vars',expr)), > AInclude {top_env_emptyInfer with ty = Map.add name t Map.empty} > else pfail, AInclude top_env_emptyInfer > | BundleNominal(q,(r,name),vars',expr) -> > let x = bundle_nominal_rec [[q,(r,name),vars',expr]] > if 0 = errors.Count then psucc (fun () -> > FNominal(q,(r,name),vars',expr)), AInclude x > else pfail, AInclude top_env_emptyInfer > | BundleNominalRec l -> > let _ = // Checks that mutually recursive unions do not have duplicates. > let h = HashSet() > l |> List.iter (fun (_,_,_,x) -> > match x with > | RawTUnion(_,l,_,_) -> l |> Map.iter (fun k v -> if h.Add k = > false then errors.Add(range_of_texpr (snd v),DuplicateKeyInRecUnion)) > | _ -> () > ) > let x = bundle_nominal_rec l > if 0 = errors.Count then psucc (fun () -> FNominalRec l), AInclude x > else pfail, AInclude top_env_emptyInfer > | BundlePrototype(com,r,(r',name),(w,var_init),vars',expr) -> > let i = at_tag top_env'.prototypes_next_tag > let cons = CPrototype i > let scope = 0 > let vars,env_ty = typevars scope {term=Map.empty; constraints=Map.empty; > ty=Map.empty} vars' > let kind = List.foldBack (fun (k : Var) s -> KindFun(k.kind,s)) vars > KindType > let v' = {scope=scope; constraints=Set.singleton cons; name=var_init; > kind=kind} > let env_ty = Map.add var_init (tyvar v') env_ty > let vars = v' :: vars > let v = fresh_var scope > ty_init scope {term=Map.empty; ty=env_ty; constraints=Map.empty} v expr > let body = List.foldBack (fun a b -> TyForall(a,b)) vars (term_subst v) > if 0 = errors.Count && (assert_foralls_used errors r' body; 0 = > errors.Count) then > let x = > { top_env_emptyInfer with > prototypes_next_tag = i.tag + 1 > prototypes = Map.add i {|name=name; signature=body; > kind=v'.kind|} Map.empty > term = Map.add name (if com <> "" then TyComment(com,body) > else body) Map.empty > constraints = Map.add name (C cons) Map.empty > } > psucc (fun () -> FPrototype(r,(r',name),(w,var_init),vars',expr)), > AInclude x > else pfail, AInclude top_env_emptyInfer > | BundleInl(com,q,(_,name as w),a,true) -> > let env = inl scope {term=Map.empty; ty=Map.empty; > constraints=Map.empty} (w,a) > let term = > let x = env.term.[[name]] > if com <> "" then TyComment(com, x) else x > (if 0 = errors.Count then psucc (fun () -> FInl(q,w,fill q Map.empty a)) > else pfail), > AInclude { top_env_emptyInfer with term = Map.add name term Map.empty} > | BundleInl(com,q,(_,name as w),a,false) -> > assert_bound_vars {term=Map.empty; ty=Map.empty; constraints=Map.empty} > a > (if 0 = errors.Count then psucc (fun () -> FInl(q,w,a)) else pfail), > AInclude { top_env_emptyInfer with term = Map.add name (TySymbol > "<real>") Map.empty } > | BundleRecInl(l,is_top_down) -> > let _ = > let h = HashSet() > List.iter (fun (_,_,(r,n),_) -> if h.Add n = false then > errors.Add(r,DuplicateRecInlName)) l > let env_term = > if is_top_down then > let l = List.map (fun (com,_,a,b) -> a,b) l > (rec_block scope {term=Map.empty; ty=Map.empty; > constraints=Map.empty} l).term > else > let env_term = List.fold (fun s (com,_,(_,a),_) -> Map.add a > (TySymbol "<real>") s) Map.empty l > l |> List.iter (fun (com,_,_,x) -> assert_bound_vars {term = > env_term; ty = Map.empty; constraints=Map.empty} x) > env_term > let filled_top = > if 0 = errors.Count then > if is_top_down then psucc (fun () -> FRecInl(List.map (fun > (_,a,b,c) -> a,b,fill a env_term c) l)) > else psucc (fun () -> FRecInl(List.map (fun (_,a,b,c) -> a,b,c) > l)) > else pfail > let env_term = > List.fold (fun env_term (com,_,(_,n),_) -> > if com <> "" then Map.add n (TyComment(com, Map.find n > env_term)) env_term else env_term > ) env_term l > filled_top, AInclude (Map.fold (fun s k v -> {s with term = Map.add k v > s.term}) top_env_emptyInfer env_term) > | BundleInstance(r,prot,ins,vars,body) -> > let fail = pfail,AInclude top_env_emptyInfer > let assert_no_kind x = x |> List.iter (fun ((r,(_,k)),_) -> match k with > RawKindWildcard -> () | _ -> errors.Add(r,KindNotAllowedInInstanceForall)) > let assert_vars_count vars_count vars_expected = if vars_count <> > vars_expected then > errors.Add(r,InstanceCoreVarsShouldMatchTheArityDifference(vars_count,vars_expec > ted)) > let assert_kind_compatibility got expected = > try unify_kind' InstanceKindError r got expected > with :? InferTypeErrorException as e -> errors.AddRange e.Data0 > let assert_kind_arity prot_kind_arity ins_kind_arity = if ins_kind_arity > < prot_kind_arity then > errors.Add(r,InstanceArityError(prot_kind_arity,ins_kind_arity)) > let assert_instance_forall_does_not_shadow_prototype_forall > prot_forall_name = List.iter (fun ((r,(a,_)),_) -> if a = prot_forall_name then > errors.Add(r,InstanceVarShouldNotMatchAnyOfPrototypes)) vars > let assert_orphan_shadow_check (prot_id : GlobalId) (ins_id : GlobalId) > = > // if Map.containsKey (prot_id, ins_id) top_env.prototypes_instances > // then errors.Add(r,ShadowedInstance) > () > let assert_orphan_instance_check (prot_id : GlobalId) (ins_id : > GlobalId) = > // if (prot_id.package_id = package_id || ins_id.package_id = > package_id) = false then errors.Add(r,OrphanInstance) > () > let body prot_id ins_id = > let ins_kind' = top_env.nominals_aux.[[ins_id]].kind > let guard next = if 0 = errors.Count then next () else fail > let ins_kind = kind_get ins_kind' > let prototype = top_env.prototypes.[[prot_id]] > hover_types.AddHover(fst prot, (prototype.signature,"")) // TODO: > Add the hover for the instance signature. > let prototype_init_forall_kind = prototype_init_forall_kind > prototype.signature > let prot_kind = kind_get prototype_init_forall_kind > assert_kind_arity prot_kind.arity ins_kind.arity > guard <| fun () -> > let vars_expected = ins_kind.arity - prot_kind.arity > assert_kind_compatibility (List.skip vars_expected ins_kind.args |> > List.reduceBack (fun a b -> KindFun(a,b))) prototype_init_forall_kind > guard <| fun () -> > assert_vars_count (List.length vars) vars_expected > guard <| fun () -> > assert_no_kind vars > guard <| fun () -> > let ins_vars, env_ty = > List.mapFold (fun s (((r,_),_) & x,k) -> > let v = {typevar_to_var scope Map.empty x with kind = k} > let x = tyvar v > hover_types.AddHover(r,(x,"")) > x, Map.add v.name x s > ) Map.empty (List.zip vars (List.take vars_expected > ins_kind.args)) > let ins_constraints = ins_vars |> List.map (visit_t >> function > TyVar (x,_) -> x.constraints | _ -> failwith "impossible") > let ins_core, _ = List.fold (fun (a,k) (b : T) -> let k = trim_kind > k in TyApply(a,b,k),k) (TyNominal ins_id,ins_kind') ins_vars > let env_ty, prot_body = > match foralls_ty_get prototype.signature with > | (prot_core :: prot_foralls), prot_body -> > List.fold (fun ty x -> > assert_instance_forall_does_not_shadow_prototype_forall > x.name > Map.add x.name (tyvar x) ty) env_ty prot_foralls, > let prot_body = subst [[prot_core, ins_core]] prot_body > let _ = > List.foldBack (fun x s -> TyForall(x,s)) prot_foralls > prot_body > |> List.foldBack (fun x s -> match visit_t x with > TyVar(x,_) -> TyForall(x,s) | _ -> failwith "impossible") ins_vars > |> fun x -> generalized_statements.Add(body,x) > prot_body > | _ -> failwith "impossible" > assert_orphan_shadow_check prot_id ins_id > assert_orphan_instance_check prot_id ins_id > guard <| fun () -> > top_env <- {top_env with prototypes_instances = Map.add > (prot_id,ins_id) ins_constraints top_env.prototypes_instances} > term scope {term=Map.empty; ty=env_ty; constraints=Map.empty} > prot_body body > (if 0 = errors.Count then psucc (fun () -> FInstance(r,(fst prot, > prot_id),(fst ins, ins_id),fill r Map.empty body)) else pfail), > AInclude {top_env_emptyInfer with prototypes_instances = Map.add > (prot_id,ins_id) ins_constraints Map.empty} > > let fake _ = fail > let check_ins on_succ = > match Map.tryFind (snd ins) top_env.ty with > | None -> errors.Add(fst ins, UnboundVariable (snd ins)); fail > | Some(TyNominal i') -> on_succ i' > | Some x -> errors.Add(fst ins, ExpectedHigherOrder x); fail > match Map.tryFind (snd prot) top_env.constraints with > | None -> errors.Add(fst prot, UnboundVariable (snd prot)); check_ins > fake > | Some(C (CPrototype i)) -> check_ins (body i) > | Some(C x) -> errors.Add(fst prot, ExpectedPrototypeConstraint x); > check_ins fake > | Some(M _) -> errors.Add(fst prot, ExpectedPrototypeInsteadOfModule); > check_ins fake > | BundleOpen(q,(r,a),b) -> > match module_openInfer (Some hover_types) (loc_env top_env) Map.empty r > a b with > | Result.Ok x -> psucc (fun () -> FOpen(q,(r,a),b)), AOpen > {top_env_emptyInfer with term=x.term; ty=x.ty; constraints=x.constraints} > | Result.Error er -> errors.Add(er); pfail, AOpen top_env_emptyInfer > |> fun (filled_top, top_env_additions) -> > if 0 = errors.Count then > annotations |> Seq.iter (fun (KeyValue(_,(r,x))) -> if has_metavars > x then errors.Add(r, ValueRestriction x)) > { > filled_top = filled_top > top_env_additions = top_env_additions > offset = bundle_range expr |> fst |> fun x -> x.line > hovers = hover_types.ToArray() |> Array.map (fun ((a:VSCRange),(b,(com : > string))) -> a, let b = show_t top_env b in if com <> "" then sprintf > "%s\n---\n%s" b com else b) > errors = errors |> Seq.toList |> List.map (fun (a,b) -> a, > show_type_error top_env b) > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### base_types > > ── fsharp ────────────────────────────────────────────────────────────────────── > let base_types (default_env : DefaultEnv) = > let var name = {scope=0; kind=KindType; constraints=Set.empty; name=name} > let inline inl f = let x = var "x" in TyInl(x,f x) > let inline inl2 f = let x,y = var "x", var "y" in TyInl(x,TyInl(y,f x y)) > [[ > "i8", TyPrim Int8T > "i16", TyPrim Int16T > "i32", TyPrim Int32T > "i64", TyPrim Int64T > "u8", TyPrim UInt8T > "u16", TyPrim UInt16T > "u32", TyPrim UInt32T > "u64", TyPrim UInt64T > "f32", TyPrim Float32T > "f64", TyPrim Float64T > "string", TyPrim StringT > "bool", TyPrim BoolT > "char", TyPrim CharT > "array_base", inl (fun x -> TyArray(tyvar x)) > "heap", inl (fun x -> TyLayout(tyvar x,Layout.Heap)) > "mut", inl (fun x -> TyLayout(tyvar x,Layout.HeapMutable)) > "stack_mut", inl (fun x -> TyLayout(tyvar x,Layout.StackMutable)) > "fptr", inl2 (fun x y -> TyFun(tyvar x,tyvar y,FT_Pointer)) > "closure", inl2 (fun x y -> TyFun(tyvar x,tyvar y,FT_Closure)) > "int", TyPrim default_env.default_int > "uint", TyPrim default_env.default_uint > "float", TyPrim default_env.default_float > ]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_env_defaultInfer > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_env_defaultInfer default_env : TopEnv = > // Note: `top_env_default` should have no nominals, prototypes or terms. > {top_env_emptyInfer with > ty = Map.ofList (base_types default_env) > constraints = > [[ > "uint", CUInt > "sint", CSInt > "int", CInt > "float", CFloat > "number", CNumber > "prim", CPrim > "record", CRecord > "symbol", CSymbol > ]] |> Map.ofList |> Map.map (fun _ -> C) > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## PartEvalPrepass > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Id > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Id = int32 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ScopeEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ScopeEnv = {|free_vars : int [[]]; stack_size : int|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Scope > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Scope = {term : ScopeEnv; ty : ScopeEnv} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Range > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Range = {path : string; range : VSCRange} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Macro > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Macro = > | MText of string > | MTerm of E > | MType of TPrepass > | MLitType of TPrepass > and TypeMacro = > | TMText of string > | TMType of TPrepass > | TMLitType of TPrepass > and RecordWith = > | RSymbol of (Range * string) * E > | RSymbolModify of (Range * string) * E > | RVar of (Range * E) * E > | RVarModify of (Range * E) * E > and RecordWithout = > | WSymbol of Range * string > | WVar of Range * E > and PatRecordMemberPrepass = > | Symbol of (Range * string) * Id > | Var of (Range * E) * Id > and [[<ReferenceEquality>]] E = > | EFun of Range * Id * E * TPrepass option > | EFun' of Range * Scope * Id * E * TPrepass option > | EForall of Range * Id * E > | EForall' of Range * Scope * Id * E > | ERecursiveFun' of Range * Scope * Id * E ref * TPrepass option > | ERecursiveForall' of Range * Scope * Id * E ref > | ERecursive of E ref // For global mutually recursive functions > | EPatternRef of E ref > | EJoinPoint of Range * E * TPrepass option * backend: (Range * string) > option * name: string option > | EJoinPoint' of Range * Scope * E * TPrepass option * backend: (Range * > string) option * name: string option > | EB of Range > | EV of Id > | ELit of Range * Literal > | EDefaultLit of Range * string * TPrepass > | ESymbol of Range * string > | EType of Range * TPrepass > | EApply of Range * E * E > | EArray of Range * E list * TPrepass > | ETypeApply of Range * E * TPrepass > | ERecBlock of Range * (Id * E) list * on_succ: E > | ERecordWith of Range * (Range * E) list * RecordWith list * RecordWithout > list > | EModule of Map<string, E> > | EOp of Range * Op * E list > | EPatternMiss of E > | ETypePatternMiss of TPrepass > | EAnnot of Range * E * TPrepass > | EIfThenElse of Range * E * E * E > | EIfThen of Range * E * E > | EPair of Range * E * E > | ESeq of Range * E * E > | EMutableSet of Range * E * (Range * E) list * E > | EReal of Range * E > | EExists of Range * TPrepass list * E > | EMacro of Range * Macro list * TPrepass > | EPrototypeApply of Range * prototype_id: GlobalId * TPrepass > | EPatternMemo of E > | ENominal of Range * E * TPrepass > // Regular pattern matching > | ELet of Range * Id * E * E > | EUnbox of Range * symbol: string * Id * body: E * on_succ: E * on_fail: E > | EExistsTest of Range * bind: Id * pat_type: Id [[]] * pat: Id * on_succ: E > * on_fail: E > | EPairTest of Range * bind: Id * pat1: Id * pat2: Id * on_succ: E * > on_fail: E > | ESymbolTest of Range * string * bind: Id * on_succ: E * on_fail: E > | ERecordTest of Range * PatRecordMemberPrepass list * bind: Id * on_succ: E > * on_fail: E > | EAnnotTest of Range * TPrepass * bind: Id * on_succ: E * on_fail: E > | EUnitTest of Range * bind: Id * on_succ: E * on_fail: E > | ENominalTest of Range * TPrepass * bind: Id * pat: Id * on_succ: E * > on_fail: E > | ELitTest of Range * Literal * bind: Id * on_succ: E * on_fail: E > | EDefaultLitTest of Range * string * TPrepass * bind: Id * on_succ: E * > on_fail: E > | ETypecase of Range * TPrepass * (TPrepass * E) list > and [[<ReferenceEquality>]] TPrepass = > | TForall' of Range * Scope * Id * TPrepass > | TForall of Range * Id * TPrepass > | TArrow' of Scope * Id * TPrepass > | TArrow of Id * TPrepass > | TExists > | TJoinPoint' of Range * Scope * TPrepass > | TJoinPoint of Range * TPrepass > | TPatternRef of TPrepass ref > | TB of Range > | TLit of Range * Literal > | TV of Id > | TPair of Range * TPrepass * TPrepass > | TFun of TPrepass * TPrepass * FunType > | TRecord of Range * Map<int * string,TPrepass> > | TModule of Map<string,TPrepass> > | TUnion of Range * (Map<int * string,TPrepass * TPrepass option> * > UnionLayout) > | TSymbol of Range * string > | TApply of Range * TPrepass * TPrepass > | TPrim of PrimitiveType > | TTerm of Range * E > | TMacro of Range * TypeMacro list > | TNominal of GlobalId > | TArray of TPrepass > | TLayout of TPrepass * Layout > | TMetaV of Id > | TTypecase of Range * TPrepass * (TPrepass * TPrepass) list > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Printable > > ── fsharp ────────────────────────────────────────────────────────────────────── > module Printable = > type PMacro = > | MText of string > | MTerm of PE > | MType of PT > | MLitType of PT > and PTypeMacro = > | TMText of string > | TMType of PT > | TMLitType of PT > and PRecordWith = > | RSymbol of string * PE > | RSymbolModify of string * PE > | RVar of PE * PE > | RVarModify of PE * PE > and PRecordWithout = > | WSymbol of string > | WVar of PE > and PPatRecordMember = > | Symbol of string * Id > | Var of PE * Id > and [[<ReferenceEquality>]] PE = > | EFun' of Scope * Id * PE * PT option > | EForall' of Scope * Id * PE > | ERecursiveFun' of Scope * Id * PE * PT option > | ERecursiveForall' of Scope * Id * PE > | ERecursive of PE > | EJoinPoint of PE * PT option * string option > | EJoinPoint' of Scope * PE * PT option * string option > | EArray of PE list * PT > | EFun of Id * PE * PT option > | EForall of Id * PE > | EB > | EV of Id > | ELit of Literal > | EDefaultLit of string * PT > | ESymbol of string > | EType of PT > | EApply of PE * PE > | ETypeApply of PE * PT > | ERecBlock of (Id * PE) list * on_succ: PE > | ERecordWith of PE list * PRecordWith list * PRecordWithout list > | EModule of Map<string, PE> > | EOp of Op * PE list > | EPatternMiss of PE > | ETypePatternMiss of PT > | EAnnot of PE * PT > | EIfThenElse of PE * PE * PE > | EIfThen of PE * PE > | EPair of PE * PE > | ESeq of PE * PE > | EHeapMutableSet of PE * PE list * PE > | EReal of PE > | EExists of PT list * PE > | EMacro of PMacro list * PT > | EPrototypeApply of prototype_id: GlobalId * PT > | EPatternMemo of PE > | ENominal of PE * PT > // Regular pattern matching > | ELet of Id * PE * PE > | EUnbox of Id * string * PE * PE * PE > | EExistsTest of bind: Id * pat_type: Id [[]] * pat: Id * on_succ: PE * > on_fail: PE > | EPairTest of bind: Id * pat1: Id * pat2: Id * on_succ: PE * on_fail: > PE > | ESymbolTest of string * bind: Id * on_succ: PE * on_fail: PE > | ERecordTest of PPatRecordMember list * bind: Id * on_succ: PE * > on_fail: PE > | EAnnotTest of PT * bind: Id * on_succ: PE * on_fail: PE > | EUnitTest of bind: Id * on_succ: PE * on_fail: PE > | ENominalTest of PT * bind: Id * pat: Id * on_succ: PE * on_fail: PE > | ELitTest of Literal * bind: Id * on_succ: PE * on_fail: PE > | EDefaultLitTest of string * PT * bind: Id * on_succ: PE * on_fail: PE > | ETypecase of PT * (PT * PE) list > | EOmmitedRecursive > and [[<ReferenceEquality>]] PT = > | TTypecase of PT * (PT * PT) list > | TForall' of Scope * Id * PT > | TForall of Id * PT > | TArrow' of Scope * Id * PT > | TArrow of Id * PT > | TExists > | TJoinPoint' of Scope * PT > | TJoinPoint of PT > | TB > | TLit of Literal > | TV of Id > | TMetaV of Id > | TPair of PT * PT > | TFun of PT * PT * FunType > | TFunPtr of PT * PT > | TRecord of Map<int * string,PT> > | TModule of Map<string,PT> > | TUnion of Map<int * string,PT> * UnionLayout > | TSymbol of string > | TApply of PT * PT > | TPrim of PrimitiveType > | TTerm of PE > | TMacro of PTypeMacro list > | TNominal of GlobalId > | TArray of PT > | TLayout of PT * Layout > > let eval x = > let recs = System.Collections.Generic.HashSet(HashIdentity.Reference) > let rec term = function > | E.ETypecase(r,a,b) -> ETypecase(ty a,b |> List.map (fun (a,b) -> > ty a, term b)) > | E.EPatternRef a -> term a.Value > | E.EFun'(_,a,b,c,d) -> EFun'(a,b,term c,Option.map ty d) > | E.EForall'(_,a,b,c) -> EForall'(a,b,term c) > | E.EArray(_,a,b) -> EArray(List.map term a,ty b) > | E.ERecursiveFun'(_,a,b,c,d) -> > let r = c.Value > let r = if recs.Add(r) then term r else EOmmitedRecursive > ERecursiveFun'(a,b,r,Option.map ty d) > | E.ERecursiveForall'(_,a,b,c) -> > let r = c.Value > let r = if recs.Add(r) then term r else EOmmitedRecursive > ERecursiveForall'(a,b,r) > | E.ERecursive a -> > let r = a.Value > if isNull (box r) then EOmmitedRecursive > else > let r = if recs.Add(r) then term r else EOmmitedRecursive > ERecursive r > | E.EJoinPoint(_,a,b,d,_) -> EJoinPoint(term a,Option.map ty > b,Option.map snd d) > | E.EJoinPoint'(_,a,b,c,d,_) -> EJoinPoint'(a,term b,Option.map ty > c,Option.map snd d) > | E.EFun(_,a,b,c) -> EFun(a,term b,Option.map ty c) > | E.EForall(_,a,b) -> EForall(a,term b) > | E.EB _ -> EB > | E.EV i -> EV i > | E.ELit(_,a) -> ELit(a) > | E.EDefaultLit(_,a,b) -> EDefaultLit(a,ty b) > | E.ESymbol(_,a) -> ESymbol a > | E.EType(_,a) -> EType(ty a) > | E.EApply(_,a,b) -> EApply(term a,term b) > | E.ETypeApply(_,a,b) -> ETypeApply(term a,ty b) > | E.ERecBlock(_,a,b) -> ERecBlock(List.map (fun (a,b) -> a, term b) > a,term b) > | E.ERecordWith(_,a,b,c) -> > let a = a |> List.map (fun (_,a) -> term a) > let b = b |> List.map (function > | RecordWith.RSymbol((_,a),b) -> RSymbol(a,term b) > | RecordWith.RSymbolModify((_,a),b) -> RSymbolModify(a,term > b) > | RecordWith.RVar((_,a),b) -> RVar(term a,term b) > | RecordWith.RVarModify((_,a),b) -> RVarModify(term a,term > b) > ) > let c = c |> List.map (function > | RecordWithout.WSymbol(_,a) -> WSymbol a > | RecordWithout.WVar(_,a) -> WVar(term a) > ) > ERecordWith(a,b,c) > | E.EModule a -> EModule(Map.map (fun _ -> term) a) > | E.EOp(_,a,b) -> EOp(a,List.map term b) > | E.EPatternMiss a -> EPatternMiss(term a) > | E.ETypePatternMiss a -> ETypePatternMiss(ty a) > | E.EAnnot(_,a,b) -> EAnnot(term a,ty b) > | E.EIfThenElse(_,a,b,c) -> EIfThenElse(term a,term b,term c) > | E.EIfThen(_,a,b) -> EIfThen(term a,term b) > | E.EPair(_,a,b) -> EPair(term a,term b) > | E.ESeq(_,a,b) -> ESeq(term a,term b) > | E.EMutableSet(_,a,b,c) -> EHeapMutableSet(term a,List.map (snd >> > term) b,term c) > | E.EReal(_, a) -> EReal(term a) > | E.EExists(_, a, b) -> EExists(List.map ty a, term b) > | E.EMacro(_,a,b) -> > let a = a |> List.map (function > | Macro.MText a -> MText a > | Macro.MTerm a -> MTerm(term a) > | Macro.MType a -> MType(ty a) > | Macro.MLitType a -> MLitType(ty a) > ) > EMacro(a,ty b) > | E.EPrototypeApply(_,a,b) -> EPrototypeApply(a,ty b) > | E.EPatternMemo a -> EPatternMemo(term a) > | E.ENominal(_,a,b) -> ENominal(term a,ty b) > // Regular pattern matching > | E.ELet(_,a,b,c) -> ELet(a,term b,term c) > | E.EUnbox(_,q,a,b,c,d) -> EUnbox(a,q,term b,term c,term d) > | E.EExistsTest(_,a,l,q,d,e) -> EExistsTest(a,l,q,term d,term e) > | E.EPairTest(_,a,b,c,d,e) -> EPairTest(a,b,c,term d,term e) > | E.ESymbolTest(_,a,b,c,d) -> ESymbolTest(a,b,term c,term d) > | E.ERecordTest(_,a,b,c,d) -> > let a = a |> List.map (function > | PatRecordMemberPrepass.Symbol((_,a),b) -> Symbol(a,b) > | PatRecordMemberPrepass.Var((_,a),b) -> Var(term a,b) > ) > ERecordTest(a,b,term c,term d) > | E.EAnnotTest(_,a,b,c,d) -> EAnnotTest(ty a,b,term c,term d) > | E.EUnitTest(_,a,b,c) -> EUnitTest(a,term b,term c) > | E.ENominalTest(_,a,b,c,d,e) -> ENominalTest(ty a,b,c,term d,term > e) > | E.ELitTest(_,a,b,c,d) -> ELitTest(a,b,term c,term d) > | E.EDefaultLitTest(_,a,b,c,d,e) -> EDefaultLitTest(a,ty b,c,term > d,term e) > and ty = function > | TPrepass.TTypecase(_,a,b) -> TTypecase(ty a,List.map (fun (a,b) -> > ty a, ty b) b) > | TPrepass.TPatternRef a -> ty a.Value > | TPrepass.TForall'(_,a,b,c) -> TForall'(a,b,ty c) > | TPrepass.TForall(_,a,b) -> TForall(a,ty b) > | TPrepass.TArrow'(a,b,c) -> TArrow'(a,b,ty c) > | TPrepass.TArrow(a,b) -> TArrow(a,ty b) > | TPrepass.TExists -> TExists > | TPrepass.TJoinPoint'(_,a,b) -> TJoinPoint'(a,ty b) > | TPrepass.TJoinPoint(_,a) -> TJoinPoint(ty a) > | TPrepass.TB _ -> TB > | TPrepass.TLit(_,x) -> TLit x > | TPrepass.TV a -> TV a > | TPrepass.TMetaV a -> TMetaV a > | TPrepass.TPair(_,a,b) -> TPair(ty a,ty b) > | TPrepass.TFun(a,b,t) -> TFun(ty a,ty b,t) > | TPrepass.TRecord(_,a) -> TRecord(Map.map (fun _ -> ty) a) > | TPrepass.TModule a -> TModule(Map.map (fun _ -> ty) a) > | TPrepass.TUnion(_,(a,b)) -> TUnion(Map.map (fun _ x -> ty (fst x)) > a,b) > | TPrepass.TSymbol(_,a) -> TSymbol a > | TPrepass.TApply(_,a,b) -> TApply(ty a, ty b) > | TPrepass.TPrim a -> TPrim a > | TPrepass.TTerm(_,a) -> TTerm(term a) > | TPrepass.TMacro(_,a) -> > let a = a |> List.map (function > | TypeMacro.TMText a -> TMText a > | TypeMacro.TMType a -> TMType(ty a) > | TypeMacro.TMLitType a -> TMLitType(ty a) > ) > TMacro(a) > | TPrepass.TNominal a -> TNominal a > | TPrepass.TArray a -> TArray(ty a) > | TPrepass.TLayout(a,b) -> TLayout(ty a,b) > > match x with > | Choice1Of2(x,ret) -> ret (term x) > | Choice2Of2(x,ret) -> ret (ty x) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PrepassTopEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PrepassTopEnv = { > prototypes_next_tag : int > prototypes_instances : Map<GlobalId * GlobalId,E> > nominals_next_tag : int > nominals : Map<GlobalId,{|body : TPrepass; name : string|}> > term : Map<string,E> > ty : Map<string,TPrepass> > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_env_emptyPrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_env_emptyPrepass = { > prototypes_next_tag = 0 > prototypes_instances = Map.empty > nominals_next_tag = 0 > nominals = Map.empty > term = Map.empty > ty = Map.empty > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### unionPrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let unionPrepass small big = { > prototypes_next_tag = max small.prototypes_next_tag big.prototypes_next_tag > prototypes_instances = Map.foldBack Map.add small.prototypes_instances > big.prototypes_instances > nominals_next_tag = max small.nominals_next_tag big.nominals_next_tag > nominals = Map.foldBack Map.add small.nominals big.nominals > term = > Map.foldBack (fun k v s -> > let v = > match v, s |> Map.tryFind k with > | EModule x, Some (EModule x') -> Map.foldBack Map.add x x' |> > EModule > | _ -> v > s |> Map.add k v > ) small.term big.term > ty = > Map.foldBack (fun k v s -> > let v = > match v, s |> Map.tryFind k with > | TModule x, Some (TModule x') -> Map.foldBack Map.add x x' |> > TModule > | _ -> v > s |> Map.add k v > ) small.ty big.ty > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### in_modulePrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let in_modulePrepass m (a : PrepassTopEnv) = > {a with > ty = Map.add m (TModule a.ty) Map.empty > term = Map.add m (EModule a.term) Map.empty > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PropagatedVarsEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PropagatedVarsEnv = {|vars : Set<int>; range : (int * int) option|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PropagatedVars > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PropagatedVars = {term : PropagatedVarsEnv; ty : PropagatedVarsEnv} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### propagate > > ── fsharp ────────────────────────────────────────────────────────────────────── > // Attaches scopes to all the nodes. > let propagate x = > let dict = Dictionary(HashIdentity.Reference) > let (+*) a b = > match a,b with > | Some(min',max'), Some(min'',max'') -> Some(min min' min'', max max' > max'') > | Some(a,b), _ | _, Some(a,b) -> Some(a,b) > | None, None -> None > let (+) (a : PropagatedVars) (b : PropagatedVars) : PropagatedVars = { > term = {|vars = Set.union a.term.vars b.term.vars; range = a.term.range > +* b.term.range |} > ty = {|vars = Set.union a.ty.vars b.ty.vars; range = a.ty.range +* > b.ty.range |} > } > let (-*) a i = > if 0 <= i then > match a with > | Some(min',max') -> Some(min min' i, max max' i) > | None -> Some(i,i) > else a // Recursive vars are negative and get inlined so they should be > ignored when calculating the range of a scope. > let (-) (a : PropagatedVars) i = {a with term = {|vars = Set.remove i > a.term.vars; range = a.term.range -* i |} } > let (-.) (a : PropagatedVars) i = {a with ty = {|vars = Set.remove i > a.ty.vars; range = a.ty.range -* i |} } > let empty' term ty = let f x = {|vars = x; range=None|} in {term = f term; > ty = f ty} > let empty = empty' Set.empty Set.empty > let singleton_term i = empty' (Set.singleton i) Set.empty > let singleton_ty i = empty' Set.empty (Set.singleton i) > > let scope_dict = Dictionary<obj,_>(HashIdentity.Reference) > let scope x (v : PropagatedVars) = scope_dict.Add(x,v); empty' v.term.vars > v.ty.vars > let rec term x = > match x with > | EFun' _ | EForall' _ | ERecursiveFun' _ | ERecursiveForall' _ | > ERecursive _ | EJoinPoint' _ | EModule _ | ESymbol _ | ELit _ | EB _ -> empty > | EPatternRef a -> term a.Value > | EV i -> singleton_term i > | EPrototypeApply(_,_,a) | EType(_,a) | ETypePatternMiss a | > EDefaultLit(_,_,a) -> ty a > | ESeq(_,a,b) | EPair(_,a,b) | EIfThen(_,a,b) | EApply(_,a,b) -> term a > + term b > | EArray(_,a,b) -> List.fold (fun s x -> s + term x) (ty b) a > | ENominal(_,a,b) | EAnnot(_,a,b) | ETypeApply(_,a,b) -> term a + ty b > | EForall(_,i,a) -> scope x (term a -. i) > | EJoinPoint(_,a,t,_,_) -> scope x (match t with Some t -> term a + ty t > | None -> term a) > | EFun(_,i,a,t) -> scope x (match t with Some t -> term a - i + ty t | > None -> term a - i) > | ERecBlock(_,l,on_succ) -> > let s = List.fold (fun s (_,body) -> s + term body) (term on_succ) l > List.fold (fun s (id,_) -> s - id) s l > | ERecordWith(_,a,b,c) -> > let fold f a b = List.fold f b a > List.fold (fun s (_,a) -> s + term a) empty a > |> fold (fun s -> function > | RSymbolModify(_,a) | RSymbol(_,a) -> s + term a > | RVar((_,a),b) | RVarModify((_,a),b) -> s + term a + term b > ) b > |> fold (fun s -> function > | WSymbol _ -> s > | WVar(_,a) -> s + term a > ) c > | EOp(_,_,a) -> List.fold (fun s a -> s + term a) empty a > | EMutableSet(_,a,b,c) -> term a + List.fold (fun s (_,a) -> s + term a) > empty b + term c > | EIfThenElse(_,a,b,c) -> term a + term b + term c > | EExists(_,a,b) -> List.fold (fun s a -> s + ty a) (term b) a > | EPatternMiss a | EReal(_,a) -> term a > | EMacro(_,a,b) -> List.fold (fun s -> function MLitType x | MType x -> > s + ty x | MTerm x -> s + term x | MText _ -> s) (ty b) a > | EPatternMemo a -> memoize dict term a > // Regular pattern matching > | ELet(_,bind,body,on_succ) -> term on_succ - bind + term body > | EUnbox(_,_,bind,body,on_succ,on_fail) -> term on_succ - bind + term > body + term on_fail > | EExistsTest(_,bind,pat_type,pat,on_succ,on_fail) -> singleton_term > bind + (Array.fold (-.) (term on_succ) pat_type - pat) + term on_fail > | EPairTest(_,bind,pat1,pat2,on_succ,on_fail) -> singleton_term bind + > (term on_succ - pat1 - pat2) + term on_fail > | ESymbolTest(_,_,bind,on_succ,on_fail) > | EUnitTest(_,bind,on_succ,on_fail) > | ELitTest(_,_,bind,on_succ,on_fail) -> singleton_term bind + term > on_succ + term on_fail > | ERecordTest(_,a,bind,on_succ,on_fail) -> > let on_succ_and_injects = > let on_succ = List.fold (fun s (Symbol(_,a) | Var(_,a)) -> s - > a) (term on_succ) a > List.fold (fun s -> function Var((_,a),_) -> s + term a | Symbol > _ -> s) on_succ a // Though it is less efficient, I am using two passes here to > guard against future changes to pattern compilation breaking this part by > accident. > singleton_term bind + term on_fail + on_succ_and_injects > | EDefaultLitTest(_,_,t,bind,on_succ,on_fail) > | EAnnotTest(_,t,bind,on_succ,on_fail) -> singleton_term bind + ty t + > term on_succ + term on_fail > | ENominalTest(_,t,bind,pat,on_succ,on_fail) -> singleton_term bind + ty > t + (term on_succ - pat) + term on_fail > | ETypecase(_,a,b) -> > List.fold (fun s (a,b) -> > let a = ty a > let mutable b = term b > match a.ty.range with > | Some(a,a') -> for i=a to a' do b <- b -. i > | None -> () > s + a + b > ) (ty a) b > and ty = function > | TExists | TJoinPoint' _ | TForall' _ | TArrow' _ | TSymbol _ | TPrim _ > | TNominal _ | TLit _ | TB _ -> empty > | TTypecase(_,a,b) -> > List.fold (fun s (a,b) -> > let a = ty a > let mutable b = ty b > match a.ty.range with > | Some(a,a') -> for i=a to a' do b <- b -. i > | None -> () > s + a + b > ) (ty a) b > | TPatternRef a -> ty a.Value > | TV i -> singleton_ty i > | TMetaV i -> {empty with ty = {|empty.ty with range = Some(i,i)|} } > | TApply(_,a,b) | TPair(_,a,b) | TFun(a,b,_) -> ty a + ty b > | TUnion(_,(a,_)) -> a |> Map.fold (fun s k (a,b) -> s + ty a + > (Option.map ty b |> Option.defaultValue empty)) empty > | TRecord(_,a) -> Map.fold (fun s k v -> s + ty v) empty a > | TModule a -> Map.fold (fun s k v -> s + ty v) empty a > | TTerm(_,a) -> term a > | TMacro(_,a) -> a |> List.fold (fun s -> function TMText _ -> s | > TMLitType x | TMType x -> s + ty x) empty > | TForall(_,i,a) | TArrow(i,a) as x -> scope x (ty a -. i) > | TJoinPoint(_,a) as x -> scope x (ty a) > | TArray(a) | TLayout(a,_) -> ty a > > let _ = match x with Choice1Of2 x -> term x | Choice2Of2 x -> ty x > scope_dict > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ResolveEnvValue > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ResolveEnvValue = {|term : Set<Id>; ty : Set<Id> |} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ResolveEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ResolveEnv = Map<int, ResolveEnvValue> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### resolve_recursive_free_vars > > ── fsharp ────────────────────────────────────────────────────────────────────── > let resolve_recursive_free_vars env = > Map.fold (fun (env : ResolveEnv) k v -> > let has_visited = HashSet() > let rec f (s : ResolveEnvValue) k v = > if has_visited.Add(k) then > let s = Set.fold (fun s k -> if k < 0 then f s k env.[[k]] else > {|s with term = Set.add k s.term|}) s v.term > Set.fold (fun s k -> {|s with ty = Set.add k s.ty|}) s v.ty > else s > Map.add k (f {|term=Set.empty; ty=Set.empty|} k v) env > ) env env > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### resolve > > ── fsharp ────────────────────────────────────────────────────────────────────── > let resolve (scope : Dictionary<obj,PropagatedVars>) x = > let dict = Dictionary(HashIdentity.Reference) > let subst' (env : ResolveEnv) (x : PropagatedVars) : PropagatedVars = > let f (s : ResolveEnvValue) x = > if x < 0 then > match Map.tryFind x env with > | Some x -> {|term=Set.union s.term x.term; ty=Set.union s.ty > x.ty|} > | None -> {|s with term=Set.add x s.term|} > else {|s with term=Set.add x s.term|} > let fv = Set.fold f {|term=Set.empty; ty=Set.empty|} x.term.vars > {term = {|x.term with vars = fv.term|}; ty = {|x.ty with vars = > Set.union fv.ty x.ty.vars|} } > let subst env (x : obj) = match scope.TryGetValue(x) with true, v -> > scope.[[x]] <- subst' env v | _ -> () > let rec term (env : ResolveEnv) x = > let f = term env > match x with > | EForall' _ | EFun' _ | ERecursiveForall' _ | ERecursiveFun' _ | > ERecursive _ | EJoinPoint' _ | EModule _ | EV _ | ESymbol _ | ELit _ | EB _ -> > () > | EPatternRef a -> f a.Value > | EDefaultLit(_,_,a) | EPrototypeApply(_,_,a) | EType(_,a) | > ETypePatternMiss a -> ty env a > | EJoinPoint(_,a,b,_,_) | EFun(_,_,a,b) -> subst env x; f a; Option.iter > (ty env) b > | EForall(_,_,a) -> subst env x; f a > | ERecBlock(r,a,b) -> > // Goes over all the functions in a recursive block, resolving them. > // The reason why this is sound is because the outer blocks are > progressively resolved as they go in. > let env = > let l = > List.fold (fun s (id,body) -> > let x = subst' env scope.[[body]] > Map.add id {|term=x.term.vars; ty=x.ty.vars|} s > ) Map.empty a > |> resolve_recursive_free_vars > Map.foldBack Map.add l env > a |> List.iter (fun (id,body) -> > scope.[[body]] <- > let x = env.[[id]] > let v = scope.[[body]] > {term = {|v.term with vars = x.term |}; ty = {|v.ty with > vars=x.ty|} } > term env body > ) > term env b > | ERecordWith(_,a,b,c) -> > List.iter (snd >> f) a > b |> List.iter (function > | RSymbolModify(_,a) | RSymbol(_,a) -> f a > | RVarModify((_,a),b) | RVar((_,a),b) -> f a; f b) > c |> List.iter (function > | WSymbol _ -> () > | WVar(_,a) -> f a) > | ENominal(_,a,b) | ETypeApply(_,a,b) | EAnnot(_,a,b) -> f a; ty env b > | EOp(_,_,a) -> List.iter f a > | EExists(_,a,b) -> List.iter (ty env) a; f b > | EPatternMiss a | EReal(_,a) -> f a > | EArray(_,a,b) -> List.iter f a; ty env b > | EExistsTest(_,_,_,_,a,b) > | EUnitTest(_,_,a,b) | ESymbolTest(_,_,_,a,b) | EPairTest(_,_,_,_,a,b) | > ELitTest(_,_,_,a,b) > | ELet(_,_,a,b) | EIfThen(_,a,b) | EPair(_,a,b) | ESeq(_,a,b) | > EApply(_,a,b) -> f a; f b > | EMutableSet(_,a,b,c) -> f a; List.iter (snd >> f) b; f c > | EUnbox(_,_,_,a,b,c) | EIfThenElse(_,a,b,c) -> f a; f b; f c > | EMacro(_,a,b) -> > a |> List.iter (function MLitType a | MType a -> ty env a | MTerm a > -> f a | MText _ -> ()) > ty env b > | EPatternMemo a -> memoize dict f a > | ERecordTest(_,l,_,a,b) -> > l |> List.iter (function Symbol _ -> () | Var((_,a),_) -> f a) > f a; f b > | EDefaultLitTest(_,_,t,_,a,b) | ENominalTest(_,t,_,_,a,b) | > EAnnotTest(_,t,_,a,b) -> ty env t; f a; f b > | ETypecase(_,a,b) -> ty env a; b |> List.iter (fun (a,b) -> ty env a; > term env b) > > and ty (env : ResolveEnv) x = > let f = ty env > match x with > | TExists | TJoinPoint' _ | TForall' _ | TArrow' _ | TNominal _ | TPrim > _ | TSymbol _ | TV _ | TMetaV _ | TLit _ | TB _ -> () > | TTypecase(_,a,b) -> ty env a; b |> List.iter (fun (a,b) -> ty env a; > ty env b) > | TPatternRef a -> f a.Value > | TForall(_,_,a) > | TArrow(_,a) -> subst env x; f a > | TApply(_,a,b) | TFun(a,b,_) | TPair(_,a,b) -> f a; f b > | TUnion(_,(a,_)) -> a |> Map.iter (fun _ (a,b) -> f a; Option.iter f b) > | TRecord(_,a) -> Map.iter (fun _ -> f) a > | TModule a -> Map.iter (fun _ -> f) a > | TTerm(_,a) -> term env a > | TMacro(_,a) -> a |> List.iter (function TMText _ -> () | TMLitType a | > TMType a -> f a) > | TJoinPoint(_,a) | TLayout(a,_) | TArray(a) -> f a > > match x with > | Choice1Of2 x -> term Map.empty x > | Choice2Of2 x -> ty Map.empty x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### LowerSubEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type LowerSubEnv = {|var : Map<int,int>; adj : int|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### LowerEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type LowerEnv = {term : LowerSubEnv; ty : LowerSubEnv } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### LowerEnvRec > > ── fsharp ────────────────────────────────────────────────────────────────────── > type LowerEnvRec = Map<int,LowerEnv -> E> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### lower > > ── fsharp ────────────────────────────────────────────────────────────────────── > let lower (scope : Dictionary<obj,PropagatedVars>) x = > let dict = Dictionary(HashIdentity.Reference) > let scope (env : LowerEnv) x = > let v = scope.[[x]] > let fv v env = v |> Set.toArray |> Array.map (fun i -> Map.find i env) > let sz = function Some(min',max') -> max' - min' + 1 | None -> 0 > let scope : Scope = { > term = {|free_vars = fv v.term.vars env.term.var; stack_size = sz > v.term.range|} > ty = {|free_vars = fv v.ty.vars env.ty.var; stack_size = sz > v.ty.range|} > } > > let vars v = Set.fold (fun (s,i) x -> Map.add x i s,i+1) (Map.empty, 0) > v |> fst > let adj len = function Some(min',_) -> len - min' | None -> 0 > let env : LowerEnv = { > term = {|var = vars v.term.vars; adj = adj > scope.term.free_vars.Length v.term.range|} > ty = {|var = vars v.ty.vars; adj = adj scope.ty.free_vars.Length > v.ty.range|} > } > > scope, env > > let adj_term (env : LowerEnv) i = > let i' = i + env.term.adj > i', {env with term = {|env.term with var = Map.add i i' env.term.var|}} > let adj_ty (env : LowerEnv) i = > let i' = i + env.ty.adj > i', {env with ty = {|env.ty with var = Map.add i i' env.ty.var|}} > > let rec term (env_rec : LowerEnvRec) (env : LowerEnv) x = > let f = term env_rec env > let g = ty env_rec > match x with > | EForall' _ | EJoinPoint' _ | EFun' _ | ERecursiveForall' _ | > ERecursiveFun' _ | ERecursive _ | EModule _ | ESymbol _ | ELit _ | EB _ -> x > | EPatternRef a -> f a.Value > | EFun(r,pat,body,t) -> > let scope, env = scope env x > let pat, env = adj_term env pat > assert (scope.term.free_vars.Length = pat) > EFun'(r,scope,pat,term env_rec env body,Option.map (g env) t) > | EForall(r,pat,body) -> > let scope, env = scope env x > let pat, env = adj_ty env pat > assert (scope.ty.free_vars.Length = pat) > EForall'(r,scope,pat,term env_rec env body) > | EJoinPoint(r,body,t,q,name) -> > let scope, env = scope env x > EJoinPoint'(r,scope,term env_rec env body,Option.map (g env) > t,q,name) > | EV i when 0 <= i -> EV env.term.var.[[i]] > | EV i -> env_rec.[[i]] env > | EDefaultLit(r,a,b) -> EDefaultLit(r,a,g env b) > | EType(r,a) -> EType(r,g env a) > | ETypePatternMiss a -> ETypePatternMiss(g env a) > | EApply(r,a,b) -> EApply(r,f a,f b) > | ETypeApply(r,a,b) -> ETypeApply(r,f a,g env b) > | ENominal(r,a,b) -> ENominal(r,f a,g env b) > | ERecBlock(r,a,b) -> > let l,env_rec = > List.mapFold (fun (env_rec : LowerEnvRec) (i,body) -> > let re = ref Unchecked.defaultof<_> > let eval env_rec = > let _,env = scope env body > re.Value <- > match body with > | EFun(_,i,body,_) -> > let _,env = adj_term env i > term env_rec env body > | EForall(_,i,body) -> > let _,env = adj_ty env i > term env_rec env body > | _ -> failwith "Compiler error: Expected a fun or a > forall." > let body env = > let scope,env = scope env body > match body with > | EFun(r,i,_,d) -> > let i,_ = adj_term env i > ERecursiveFun'(r,scope,i,re,d) > | EForall(r,i,_) -> > let i,_ = adj_ty env i > ERecursiveForall'(r,scope,i,re) > | _ -> failwith "Compiler error: Expected a fun or a > forall." > eval,Map.add i body env_rec > ) env_rec a > List.iter (fun eval -> eval env_rec) l > term env_rec env b > | ERecordWith(r,a,b,c) -> > let a = List.map (fun (r,a) -> r, f a) a > let b = b |> List.map (function > | RSymbol(a,b) -> RSymbol(a,f b) > | RSymbolModify(a,b) -> RSymbolModify(a,f b) > | RVar((r,a),b) -> RVar((r,f a),f b) > | RVarModify((r,a),b) -> RVarModify((r,f a),f b) > ) > let c = c |> List.map (function > | WSymbol _ as x -> x > | WVar(r,a) -> WVar(r,f a) > ) > ERecordWith(r,a,b,c) > | EOp(r,a,b) -> EOp(r,a,List.map f b) > | EAnnot(r,a,b) -> EAnnot(r,f a,g env b) > | EIfThenElse(r,a,b,c) -> EIfThenElse(r,f a,f b,f c) > | EIfThen(r,a,b) -> EIfThen(r,f a,f b) > | EArray(r,a,b) -> EArray(r,List.map f a, g env b) > | EPair(r,a,b) -> EPair(r,f a,f b) > | ESeq(r,a,b) -> ESeq(r,f a,f b) > | EMutableSet(r,a,b,c) -> EMutableSet(r,f a,List.map (fun (a,b) -> a, f > b) b,f c) > | EPatternMiss a -> EPatternMiss(f a) > | EReal(r,a) -> EReal(r,f a) > | EExists(r,a,b) -> EExists(r,List.map (g env) a,f b) > | EMacro(r,a,b) -> > let a = a |> List.map (function > | MText _ as x -> x > | MLitType a -> MLitType(g env a) > | MType a -> MType(g env a) > | MTerm a -> MTerm(f a) > ) > EMacro(r,a,g env b) > | EPrototypeApply(r,a,b) -> EPrototypeApply(r,a,g env b) > | EPatternMemo x -> memoize dict f x > // Regular pattern matching > | ELet(r,pat,body,on_succ) -> > let body = term env_rec env body > let pat,env = adj_term env pat > let on_succ = term env_rec env on_succ > ELet(r,pat,body,on_succ) > | EUnbox(r,q,pat,body,on_succ,on_fail) -> > let body = term env_rec env body > let on_fail = term env_rec env on_fail > let pat,env = adj_term env pat > let on_succ = term env_rec env on_succ > EUnbox(r,q,pat,body,on_succ,on_fail) > | EPairTest(r,i,pat1,pat2,on_succ,on_fail) -> > let on_fail = term env_rec env on_fail > let i = env.term.var.[[i]] > let pat1,env = adj_term env pat1 > let pat2,env = adj_term env pat2 > let on_succ = term env_rec env on_succ > EPairTest(r,i,pat1,pat2,on_succ,on_fail) > | EExistsTest(r,i,pat_type,pat,on_succ,on_fail) -> > let on_fail = term env_rec env on_fail > let i = env.term.var.[[i]] > let pat,env = adj_term env pat > let pat_type,env = Array.mapFold adj_ty env pat_type > let on_succ = term env_rec env on_succ > EExistsTest(r,i,pat_type,pat,on_succ,on_fail) > | ESymbolTest(r,a,i,on_succ,on_fail) -> > let on_fail = term env_rec env on_fail > let i = env.term.var.[[i]] > let on_succ = term env_rec env on_succ > ESymbolTest(r,a,i,on_succ,on_fail) > | ERecordTest(r,a,i,on_succ,on_fail) -> > let on_fail = term env_rec env on_fail > let b = env.term.var.[[i]] > let a, env = > List.mapFold (fun env x -> > match x with > | Symbol(a,b) -> let b,env = adj_term env b in Symbol(a,b), > env > | Var((r,a),b) -> let b,env = adj_term env b in Var((r,f > a),b), env > ) env a > ERecordTest(r,a,b,term env_rec env on_succ,on_fail) > | EAnnotTest(r,a,i,on_succ,on_fail) -> EAnnotTest(r,g env > a,env.term.var.[[i]],f on_succ,f on_fail) > | ELitTest(r,a,i,on_succ,on_fail) -> ELitTest(r,a,env.term.var.[[i]],f > on_succ,f on_fail) > | EUnitTest(r,i,on_succ,on_fail) -> EUnitTest(r,env.term.var.[[i]],f > on_succ,f on_fail) > | ENominalTest(r,a,i,pat,on_succ,on_fail) -> > let on_fail = term env_rec env on_fail > let i = env.term.var.[[i]] > let pat, env = adj_term env pat > let on_succ = term env_rec env on_succ > ENominalTest(r,g env a,i,pat,on_succ,on_fail) > | EDefaultLitTest(r,a,b,i,on_succ,on_fail) -> EDefaultLitTest(r,a,g env > b,env.term.var.[[i]],f on_succ,f on_fail) > | ETypecase(r,a,b) -> > let b = b |> List.map (fun (a,b) -> > let metavars = Dictionary() > let mutable env_case = env > let a = > ty' (memoize metavars (fun i -> > let i, env = adj_ty env_case i > env_case <- env > TMetaV i > )) env_rec env_case a > a, term env_rec env_case b > ) > ETypecase(r,g env a,b) > and ty env_rec env x = ty' (fun _ -> failwith "Compiler error: TMetaV should > not appear here.") env_rec env x > and ty' case_tmetav env_rec env x = > let f = ty' case_tmetav env_rec env > match x with > | TMetaV i -> case_tmetav i > | TExists | TJoinPoint' _ | TForall' _ | TArrow' _ | TNominal _ | TPrim > _ | TSymbol _ | TLit _ | TB _ as x -> x > | TTypecase(r,a,b) -> > let b = b |> List.map (fun (a,b) -> > let metavars = Dictionary() > let mutable env_case = env > let a = > ty' (memoize metavars (fun i -> > let i, env = adj_ty env_case i > env_case <- env > TMetaV i > )) env_rec env_case a > a, ty env_rec env_case b > ) > TTypecase(r,ty env_rec env a,b) > | TPatternRef a -> f a.Value > | TJoinPoint(r,a) as x -> > let scope, env = scope env x > TJoinPoint'(r,scope,ty env_rec env a) > | TForall(r,a,b) as x -> > let scope, env = scope env x > let a, env = adj_ty env a > TForall'(r,scope,a,ty env_rec env b) > | TArrow(a,b) as x -> > let scope, env = scope env x > let a, env = adj_ty env a > TArrow'(scope,a,ty env_rec env b) > | TV i -> TV(env.ty.var.[[i]]) > | TPair(r,a,b) -> TPair(r,f a,f b) > | TFun(a,b,t) -> TFun(f a,f b,t) > | TRecord(r,a) -> TRecord(r,Map.map (fun _ -> f) a) > | TModule a -> TModule(Map.map (fun _ -> f) a) > | TUnion(r,(a,b)) -> TUnion(r,(Map.map (fun _ (a,b) -> f a, Option.map f > b) a,b)) > | TApply(r,a,b) -> TApply(r,f a,f b) > | TTerm(r,a) -> TTerm(r,term env_rec env a) > | TMacro(r,a) -> > let a = a |> List.map (function > | TMText _ as x -> x > | TMType a -> TMType(f a) > | TMLitType a -> TMLitType(f a) > ) > TMacro(r,a) > | TArray(a) -> TArray(f a) > | TLayout(a,b) -> TLayout(f a,b) > let env : LowerEnv = { > term = {|var = Map.empty; adj = 0|} > ty = {|var = Map.empty; adj = 0|} > } > match x with > | Choice1Of2(x,ret) -> ret (term Map.empty env x) > | Choice2Of2(x,ret) -> ret (ty Map.empty env x) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Env___ > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Env___ = { > term : {| env : Map<string,E>; i : Id; i_rec : Id |} > ty : {| env : Map<string,TPrepass>; i : Id |} > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PartEvalPrepassEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PartEvalPrepassEnv = Env___ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_term > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_term (e : PartEvalPrepassEnv) k v = let term = e.term in {e with term = > {|term with i = term.i+1; env = Map.add k v term.env|} } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_term_rec > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_term_rec (e : PartEvalPrepassEnv) k v = let term = e.term in {e with > term = {|term with i_rec = term.i_rec-1; env = Map.add k v term.env|} } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_ty > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_ty (e : PartEvalPrepassEnv) k v = let ty = e.ty in {e with ty = {|ty > with i = ty.i+1; env = Map.add k v ty.env|} } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_wildcard > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_wildcard (e : PartEvalPrepassEnv) = let ty = e.ty in {e with ty = {|ty > with i = ty.i+1|} } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_term_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_term_var (e : PartEvalPrepassEnv) k = e.term.i, add_term e k (EV > e.term.i) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### fresh_term_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let fresh_term_var (e : PartEvalPrepassEnv) = e.term.i, (let term = e.term in {e > with term = {|term with i = term.i+1|} }) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### fresh_ty_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let fresh_ty_var (e : PartEvalPrepassEnv) = e.ty.i, (let ty = e.ty in {e with ty > = {|ty with i = ty.i+1|} }) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_term_rec_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_term_rec_var (e : PartEvalPrepassEnv) k = e.term.i_rec, add_term_rec e k > (EV e.term.i_rec) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_ty_var > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_ty_var (e : PartEvalPrepassEnv) k = e.ty.i, add_ty e k (TV e.ty.i) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_ty_wildcard > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_ty_wildcard (e : PartEvalPrepassEnv) = e.ty.i, add_wildcard e > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### process_term > > ── fsharp ────────────────────────────────────────────────────────────────────── > let process_term (x : E) = > let scope = propagate (Choice1Of2 x) > resolve scope (Choice1Of2 x) > lower scope (Choice1Of2(x,id)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### process_ty > > ── fsharp ────────────────────────────────────────────────────────────────────── > let process_ty (x : TPrepass) = > let scope = propagate (Choice2Of2 x) > resolve scope (Choice2Of2 x) > lower scope (Choice2Of2(x,id)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### module_openPrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let module_openPrepass (top_env : PrepassTopEnv) env a l = > let a,b = > match top_env.term.[[snd a]], top_env.ty.[[snd a]] with > | EModule a, TModule b -> > List.fold (fun (a,b) (_,x) -> > match Map.find x a, Map.find x b with > | EModule a, TModule b -> a,b > | _ -> failwith "Compiler error: Module open's symbol index > should have been validated." > ) (a,b) l > | _ -> failwith "Compiler error: Module open should have been > validated." > { > term = {|env.term with env = Map.foldBack Map.add a env.term.env|} > ty = {|env.ty with env = Map.foldBack Map.add b env.ty.env|} > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### prepassPrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let prepassPrepass package_id module_id path (top_env : PrepassTopEnv) = > let p r = {path=path; range=r} > let at_tag i = { package_id = package_id; module_id = module_id; tag = i } > let v_term (env : PartEvalPrepassEnv) x = Map.tryFind x env.term.env |> > Option.defaultWith (fun () -> top_env.term.[[x]]) > let v_ty (env : PartEvalPrepassEnv) x = Map.tryFind x env.ty.env |> > Option.defaultWith (fun () -> top_env.ty.[[x]]) > > // The functions in this block are basically renaming string id to int ids, > in addition to pattern compilation. > let rec compile_pattern (id : Id) (env : PartEvalPrepassEnv) (clauses : > (Pattern * RawExpr) list) = > let mutable term_var_count = env.term.i > let mutable ty_var_count = env.ty.i > let patvar () = let x = term_var_count in term_var_count <- > term_var_count+1; x > let ty_patvar () = let x = ty_var_count in ty_var_count <- > ty_var_count+1; x > let loop (pat, on_succ) on_fail = > let mutable dict = Map.empty > let mutable dict_type = Map.empty > let pat_refs_term = ResizeArray() > //let pat_ref_term x = let re = ref Unchecked.defaultof<_> in > pat_refs_term.Add(x,dict,re); EPatternRef re > let pat_ref_term' x k = > let re = ref Unchecked.defaultof<_> > let r = k (EPatternRef re) > pat_refs_term.Add(x,(dict,dict_type),re) > r > let pat_refs_ty = ResizeArray() > let pat_ref_ty x = let re = ref Unchecked.defaultof<_> in > pat_refs_ty.Add(x,(dict,dict_type),re); TPatternRef re > let rec cp id pat on_succ on_fail = > let v x = > match Map.tryFind x dict with > | Some x -> x > | None -> let v = patvar() in dict <- Map.add x v dict; v > let tv x = > match Map.tryFind x dict_type with > | Some x -> x > | None -> let v = ty_patvar() in dict_type <- Map.add x v > dict_type; v > let step pat on_succ = > match pat with > | PatVar(_,x) -> v x, on_succ > | _ -> let id = patvar() in id, cp id pat on_succ on_fail > match pat with > | PatDefaultValue _ -> failwith "Compiler error: The default > value should be filled." > | PatE _ -> on_succ > | PatB r -> EUnitTest(p r,id,on_succ,on_fail) > | PatVar(r,a) -> ELet(p r,v a,EV id,on_succ) > | PatAnnot(r,a,b) -> EAnnotTest(p r,pat_ref_ty b,id,cp id a > on_succ on_fail,on_fail) > | PatPair(r,a,b) -> > // Evaling the b then a causes the call args to be rotated > in join points during peval. > // This is not a problem, but it might be surprising if you > aren't aware why that is happening. > // Swapping the next two statements would fix it for pairs. > let b,on_succ = step b on_succ > let a,on_succ = step a on_succ > EPairTest(p r,id,a,b,on_succ,on_fail) > | PatExists(r,l,b) -> > let pat_type = List.map (snd >> tv) l |> List.toArray > let pat,on_succ = step b on_succ > EExistsTest(p r,id,pat_type,pat,on_succ,on_fail) > | PatArray(r,a) -> > let r = p r > let ar_ids,on_succ = List.mapFoldBack step a on_succ > let a_length = List.length a > let on_succ,_ = > List.foldBack (fun id' (on_succ,i) -> > ELet(r,id',EOp(r,ArrayIndex,[[EV id; ELit(r,LitInt32 > i)]]),on_succ), i-1 > ) ar_ids (on_succ, a_length - 1) > let id_length = EOp(r,ArrayLength,[[EType(r,TPrim UInt64T); > EV id]]) > let pat_length = ELit(r,LitUInt64(uint64 a_length)) > > EIfThenElse(r,EOp(r,EQ,[[id_length;pat_length]]),on_succ,on_fail) > | PatSymbol(r,a) -> ESymbolTest(p r,a,id,on_succ,on_fail) > | PatRecordMembers(r,items) -> > let inject_vars = Dictionary(HashIdentity.Reference) > List.iter (function > | PatRecordMembersSymbol _ -> () > | PatRecordMembersInjectVar((_,var),_) -> > match dict.TryGetValue(var) with > | true, x -> inject_vars.[[var]] <- EV x > | _ -> inject_vars.[[var]] <- v_term env var > ) items > let binds, on_succ = > List.mapFoldBack (fun item on_succ -> > match item with > | PatRecordMembersSymbol((r,keyword),name) -> let > arg, on_succ = step name on_succ in Symbol((p r,keyword),arg), on_succ > | PatRecordMembersInjectVar((r,var),name) -> let > arg, on_succ = step name on_succ in Var((p r,inject_vars.[[var]]),arg), on_succ > ) items on_succ > ERecordTest(p r,binds,id,on_succ,on_fail) > | PatOr(r,a,b) -> let on_succ = EPatternMemo on_succ in cp id a > on_succ (cp id b on_succ on_fail) > | PatAnd(r,a,b) -> let on_fail = EPatternMemo on_fail in cp id a > (cp id b on_succ on_fail) on_fail > | PatValue(r,x) -> ELitTest(p r,x,id,on_succ,on_fail) > | PatWhen(r,p',e) -> pat_ref_term' e (fun e -> cp id p' > (EIfThenElse(p r, e, on_succ, on_fail)) on_fail) > | PatNominal(r,(_,a),l,b) -> > let id', on_succ = step b on_succ > let a = List.fold (fun s (r',x) -> TApply(p (r +. > r'),s,TSymbol(p r',x))) (v_ty env a) l > ENominalTest(p r,a,id,id',on_succ,on_fail) > | PatFilledDefaultValue(r,a,b) -> EDefaultLitTest(p > r,a,pat_ref_ty b,id,on_succ,on_fail) > | PatDyn(r,a) -> let id' = patvar() in ELet(p r,id',EOp(p > r,Dyn,[[EV id]]),cp id' a on_succ on_fail) > | PatUnbox(r,q,a) -> let id' = patvar() in EUnbox(p r,q,id',EV > id,cp id' a on_succ on_fail,on_fail) > (pat_refs_term, pat_refs_ty), pat_ref_term' on_succ (fun on_succ -> > cp id pat on_succ (EPatternMemo on_fail)) > > let l, e = List.mapFoldBack loop clauses (EPatternMiss(EV id)) > l |> List.iter (fun (terms,tys) -> // The reason I am not evaling it in > place is because of the var count which is mutable. I need to deal with the > patterns first before replacing the strings in the body. > let env (dict,dict_type) = > {env with > term = {|env.term with i=term_var_count; env=dict |> > Map.fold (fun s k v -> Map.add k (EV v) s) env.term.env|} > ty = {|env.ty with i=ty_var_count; env=dict_type |> Map.fold > (fun s k v -> Map.add k (TV v) s) env.ty.env|} > } > terms |> Seq.iter (fun (a,dict,b) -> b.Value <- term (env dict) a) > tys |> Seq.iter (fun (a,dict,b) -> b.Value <- ty (env dict) a) > ) > e > and pattern_match (env : PartEvalPrepassEnv) r body clauses = > match clauses with > | [[PatVar(_,x), on_succ]] -> > let id,env = add_term_var env x > ELet(r,id,body,term env on_succ) > | _ -> > let id,env = fresh_term_var env > ELet(r,id,body,compile_pattern id env clauses) > and pattern_function env r clauses annot = > match clauses with > | [[PatVar(_,x), on_succ]] -> > let id,env = add_term_var env x > EFun(r,id,term env on_succ,annot) > | _ -> > let id,env = fresh_term_var env > EFun(r,id,compile_pattern id env clauses,annot) > and ty env x = ty' (fun _ -> failwith "Compiler error: RawTMetaVar should > not appear here.") env x > and ty' case_metavar (env : PartEvalPrepassEnv) x = > let f = ty' case_metavar env > match x with > | RawTMetaVar(_,name) -> case_metavar (Some name) > | RawTWildcard _ -> case_metavar None > | RawTForall(r,a,b) -> > let id, env = add_ty_var env (typevar_name a) > TForall(p r,id,ty' case_metavar env b) > | RawTB r -> TB (p r) > | RawTLit (r, x) -> TLit(p r,x) > | RawTVar(r,a) -> v_ty env a > | RawTPair(r,a,b) -> TPair(p r,f a,f b) > | RawTFun(r,a,b,t) -> TFun(f a,f b,t) > | RawTExists(r,l,b) -> TExists > | RawTRecord(r,l) -> TRecord(p r,Map.map (fun _ -> f) l) > | RawTUnion(r,a,b,this) -> > let rec subst_vars_with_metavars vars a = > let f = subst_vars_with_metavars vars > match a with > | RawTTypecase _ | RawTUnion _ -> failwith "Compiler error: Not > expecting typecase or union here." > | RawTVar(r,n) -> if List.contains n vars then RawTMetaVar(r,n) > else a > | RawTPrim _ | RawTFilledNominal _ | RawTTerm _ | RawTSymbol _ | > RawTLit _ | RawTMetaVar _ | RawTB _ | RawTWildcard _ -> a > | RawTPair(r,a,b) -> RawTPair(r,f a,f b) > | RawTFun(r,a,b,c) -> RawTFun(r,f a,f b,c) > | RawTArray(r,a) -> RawTArray(r,f a) > | RawTRecord(r,a) -> RawTRecord(r,Map.map (fun _ -> f) a) > | RawTApply(r,a,b) -> RawTApply(r,f a,f b) > | RawTForall(r,a,b) -> RawTForall(r,a,subst_vars_with_metavars > (List.removeAt (List.findIndex ((=) (typevar_name a)) vars) vars) b) > | RawTExists(r,a,b) -> > let f vars a = List.removeAt (List.findIndex ((=) > (typevar_name a)) vars) vars > RawTExists(r,a,subst_vars_with_metavars (List.fold f vars a) > b) > | RawTMacro(r,a) -> > let f = function (RawMacroText _ | RawMacroTerm _ | > RawMacroTypeLit _) as a -> a | RawMacroType(r,a) -> RawMacroType(r,f a) > RawTMacro(r, List.map f a) > | RawTLayout(r,a,b) -> RawTLayout(r,f a,b) > > let make_typecase x = > let rec loop vars x = > match x with > | RawTForall(_,a,b) -> loop (typevar_name a :: vars) b > | RawTFun(r,a,b,_) -> > RawTTypecase(r,this,[[subst_vars_with_metavars vars b,a]]) > | b -> let r = range_of_texpr b in > RawTTypecase(r,this,[[subst_vars_with_metavars vars b,RawTB r]]) > loop [[]] x |> f > TUnion(p r,(Map.map (fun _ (is_gadt,x) -> f x, if is_gadt then Some > (make_typecase x) else None) a,b)) > | RawTTypecase(r,a,b) -> > let b = b |> List.map (fun (t,e) -> > let metavars = Dictionary() > let mutable env_case = env > let t = > let f (id,env) = env_case <- env; TMetaV id > ty' (function > | None -> add_ty_wildcard env_case |> f > | Some name -> memoize metavars (add_ty_var env_case >> > f) name > ) env t > t, ty env_case e > ) > TTypecase(p r,ty env a,b) > | RawTSymbol(r,a) -> TSymbol(p r,a) > | RawTApply(r,a,b) -> > match f a, f b with > | TRecord(_,a') & a, TSymbol(_,b') & b -> > > match a' |> Map.tryPick (fun (_, k) v -> if k = b' then Some v > else None) with > | Some x -> x > | None -> TApply(p r,a,b) // TODO: Will be an error during > partial evaluation time. Could be substituted for an exception here, but I do > not want to have errors during the prepass. > | a,b -> TApply(p r,a,b) > | RawTPrim(r,a) -> TPrim(a) > | RawTTerm(r,a) -> TTerm(p r,term env a) > | RawTMacro(r,l) -> > let f = function > | RawMacroText(r,a) -> TMText a > | RawMacroType(r,a) -> TMType(f a) > | RawMacroTypeLit(r,a) -> TMLitType(f a) > | RawMacroTerm _ -> failwith "Compiler error: Term vars should > not appear on the type level." > TMacro(p r,List.map f l) > | RawTArray(r,a) -> TArray(f a) > | RawTFilledNominal(r,a) -> TNominal a > | RawTLayout(r,a,b) -> TLayout(f a,b) > and term env x = > let f = term env > match x with > | RawDefaultLit(r,a) -> failwith "Compiler error: Default values should > have been annotated in `fill` by prepass time." > | RawAnnot(_,RawDefaultLit(r,a),b) -> EDefaultLit(p r,a,ty env b) > | RawAnnot(_,RawLit(r,a),b) -> EDefaultLit(p r,a.LitToString(),ty env b) > | RawB r -> EB(p r) > | RawV(r,a,_) -> v_term env a > | RawLit(r,a) -> ELit(p r,a) > | RawSymbol(r,a) -> ESymbol(p r,a) > | RawType(r,a) -> EType(p r,ty env a) > | RawMatch(r,a,b) -> pattern_match env (p r) (f a) b > | RawFun(r,a) -> pattern_function env (p r) a None > | RawAnnot(_,RawFun(r,a),t) -> pattern_function env (p r) a (Some (ty > env t)) > | RawArray(r,a) -> failwith "Compiler error: The array should have been > annotated in `fill` by prepass time." > | RawAnnot(_,RawArray(r,a),b) -> EArray(p r,List.map f a,ty env b) > | RawTypecase(r,a,b) -> > let b = b |> List.map (fun (t,e) -> > let metavars = Dictionary() > let mutable env_case = env > let t = > let f (id,env) = env_case <- env; TMetaV id > ty' (function > | None -> add_ty_wildcard env_case |> f > | Some name -> memoize metavars (add_ty_var env_case >> > f) name > ) env t > t, term env_case e > ) > ETypecase(p r,ty env a,b) > | RawFilledForall(r,name,b) > | RawForall(r,((_,(name,_)),_),b) -> > let id, env = add_ty_var env name > EForall(p r,id,term env b) > | RawRecBlock(r,l,on_succ) -> > let l,env = List.mapFold (fun env ((r,name),body) -> let id,env = > add_term_rec_var env name in (id,body), env) env l > ERecBlock(p r,List.map (fun (id,body) -> id, term env body) l,term > env on_succ) > | RawRecordWith(r,a,b,c) -> > let a = List.map (fun a -> p (range_of_expr a), f a) a > let b = b |> List.map (function > | RawRecordWithSymbol((r,a),b) -> RSymbol((p r,a),f b) > | RawRecordWithSymbolModify((r,a),b) -> RSymbolModify((p r,a),f > b) > | RawRecordWithInjectVar((r,a),b) -> RVar((p r,v_term env a),f > b) > | RawRecordWithInjectVarModify((r,a),b) -> RVarModify((p > r,v_term env a),f b)) > let c = c |> List.map (function > | RawRecordWithoutSymbol(r,a) -> WSymbol(p r,a) > | RawRecordWithoutInjectVar(r,a) -> WVar(p r,v_term env a)) > ERecordWith(p r,a,b,c) > | RawOp(r,a,b) -> EOp(p r,a,List.map f b) > | RawJoinPoint(r,q,a,name) -> EJoinPoint(p r,f a,None,Option.map (fun > (r',w) -> p r',w) q,name) > | RawAnnot(_,RawJoinPoint(r,q,a,name),b) -> EJoinPoint(p r,f a,Some (ty > env b),Option.map (fun (r',w) -> p r',w) q,name) > | RawOpen (_,a,l,on_succ) -> term (module_openPrepass top_env env a l) > on_succ > | RawApply(r,a,b) -> > let rec loop = function > | EModule a' & a, EPair(_,ESymbol(_, b'),b'') & b -> > match Map.tryFind b' a' with > | Some a -> loop (a,b'') > | None -> EApply(p r,a,b) // TODO: Will be an error during > partial evaluation time. Could be substituted for an exception here, but I do > not want to have errors during the prepass. > | EModule a' & a, ESymbol(_,b') & b -> > match Map.tryFind b' a' with > | Some a -> a > | None -> EApply(p r,a,b) // TODO: Ditto. > | a,EType(_,b) -> ETypeApply(p r,a,b) > | a,b -> EApply(p r,a,b) > loop (f a, f b) > | RawIfThenElse(r,a,b,c) -> EIfThenElse(p r,f a,f b,f c) > | RawIfThen(r,a,b) -> EIfThen(p r,f a,f b) > | RawPair(r,a,b) -> EPair(p r,f a,f b) > | RawSeq(r,a,b) -> ESeq(p r,f a,f b) > | RawHeapMutableSet(r,a,b,c) -> EMutableSet(p r,f a,List.map (fun a -> p > (range_of_expr a), f a) b,f c) > | RawReal(r,a) -> f a > | RawExists(r,(_,Some a),b) -> EExists(p r, List.map (ty env) a, f b) > | RawExists(_,(_,None),_) -> failwith "Compiler error: The exists' vars > should have been added during `fill`." > | RawMacro _ -> failwith "Compiler error: The macro's annotation should > have been added during `fill`." > | RawAnnot(_,RawMacro(r,a),b) -> > let a = a |> List.map (function > | RawMacroText(r,a) -> MText a > | RawMacroTerm(r,a) -> MTerm(f a) > | RawMacroType(r,a) -> MType(ty env a) > | RawMacroTypeLit(r,a) -> MLitType(ty env a) > ) > EMacro(p r,a,ty env b) > | RawMissingBody _ -> failwith "Compiler error: The missing body cases > should have been validated." > | RawAnnot(r,a,b) -> EAnnot(p r,f a,ty env b) > > let env : PartEvalPrepassEnv = > { > term = {|env=Map.empty; i=0; i_rec= -1|} > ty = {|env=Map.empty; i=0|} > } > > let eval_type ((r,(name,kind)) : HoVar) on_succ env = > let id, env = add_ty_var env name > TArrow(id,on_succ env) > let eval_type' env l body = List.foldBack eval_type l body env |> process_ty > > {| > base_type = process_ty > filled_top = fun x -> > let nominal_rec l = > let env,_ = > List.fold (fun (env,i) (r,(_,name),l,body) -> > add_ty env name (TNominal (at_tag i)), i+1 > ) (env, top_env.nominals_next_tag) l > List.fold (fun (term,ty',nominals,i) (r, (_,name),l,body) -> > let r = p r > let at_tag_i = at_tag i > let nom = TNominal at_tag_i > let bodyt = eval_type' env l (fun env -> TJoinPoint(p > (range_of_texpr body), ty env body)) > let term = > match body with > | RawTUnion(_,l,_,_) -> > Map.fold (fun term (_,name) (is_gadt,_) -> > if is_gadt then > let rec loop_outer = function > | TArrow'(_,_,t) -> loop_outer t // GADTs > have the foralls in their cases' type, not here. > | TJoinPoint'(r,_,TUnion(_,(l,_))) -> > let rec loop vars = function > | TForall'(r,scope,id,t) -> > EForall(r,id,loop (id :: vars) t) > | TFun(t,t',_) -> > EFun(r,0,ENominal(r,EPair(r,ESymbol(r,name),EV > 0),t'),Some(TFun(t,t',FT_Vanilla))) > | t' -> > ENominal(r,EPair(r,ESymbol(r,name),EB r),t') > let t = l |> Map.pick (fun (_, k) v -> > if k = name then Some v else None) |> fst > loop [[]] t > | _ -> failwith "Compiler error: Expected a > join point with a gadt union." > Map.add name (loop_outer bodyt |> process_term) > term > else > let rec loop vars = function > | TArrow'(scope,id,t) -> EForall(r,id,loop > (id :: vars) t) > | TJoinPoint'(r,_,TUnion(_,(l,_))) -> > let t = l |> Map.pick (fun (_, k) v -> > if k = name then Some v else None) |> fst > let t' = List.foldBack (fun id nom -> > TApply(r,nom,TV id)) vars nom > match t with > | TB _ -> > ENominal(r,EPair(r,ESymbol(r,name),EB r),t') > | _ -> > EFun(r,0,ENominal(r,EPair(r,ESymbol(r,name),EV > 0),t'),Some(TFun(t,t',FT_Vanilla))) > | _ -> failwith "Compiler error: Expected a > join point with an union." > Map.add name (loop [[]] bodyt |> process_term) > term > ) term l > | _ -> > let rec loop vars = function > | TArrow'(scope,id,t) -> EForall(r,id,loop (id :: > vars) t) > | TJoinPoint'(r,_,t) -> > let t' = List.foldBack (fun id nom -> > TApply(r,nom,TV id)) vars nom > match t with > | TB _ -> ENominal(r,EB r,t') > | _ -> EFun(r,0,ENominal(r,EV > 0,t'),Some(TFun(t,t',FT_Vanilla))) > | _ -> failwith "Compiler error: Expected a join > point." > Map.add name (loop [[]] bodyt |> process_term) term > term,Map.add name nom ty', Map.add at_tag_i {|body=bodyt; > name=name|} nominals, i+1 > ) (Map.empty, Map.empty, Map.empty, top_env.nominals_next_tag) l > match x with > | FType(_,(_,name),l,body) -> AInclude {top_env_emptyPrepass with ty = > Map.add name (eval_type' env l (fun env -> ty env body)) Map.empty} > | FNominal(r,a,b,c) -> > let term,ty,nominals,i = nominal_rec [[r,a,b,c]] > AInclude {top_env_emptyPrepass with term = term; ty = ty; nominals = > nominals; nominals_next_tag=i} > | FNominalRec l -> > let term,ty,nominals,i = nominal_rec l > AInclude {top_env_emptyPrepass with term = term; ty = ty; nominals = > nominals; nominals_next_tag=i} > | FInl(_,(_,name),body) -> AInclude {top_env_emptyPrepass with term = > Map.add name (term env body |> process_term) Map.empty} > | FRecInl l -> > let l, env = > List.mapFold (fun env (_,(_,name),_ as x) -> > let r = ref Unchecked.defaultof<_> > (x,r), add_term_rec env name (ERecursive r) > ) env l > let term = > List.fold (fun top_env_term ((_,(_,name),body),(r : ref<E>)) -> > r.Value <- term env body |> process_term > Map.add name r.Value top_env_term > ) Map.empty l > AInclude {top_env_emptyPrepass with term = term} > | FPrototype(r,(_,name),_,_,_) -> > let i = at_tag top_env.prototypes_next_tag > let r = p r > let x = EForall(r,0,EPrototypeApply(r,i,TV 0)) |> process_term > AInclude {top_env_emptyPrepass with term = Map.add name x Map.empty; > prototypes_next_tag = i.tag+1} > | FInstance(_,(_,prot_id),(_,ins_id),body) -> > AInclude {top_env_emptyPrepass with prototypes_instances = Map.add > (prot_id,ins_id) (term env body |> process_term) Map.empty} > | FOpen(r,a,b) -> > let x = module_openPrepass top_env env a b > AOpen {top_env_emptyPrepass with term=x.term.env; ty=x.ty.env} > |} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### top_env_defaultPrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let top_env_defaultPrepass default_env = > let convert_infer_to_prepass x = > let m = Dictionary(HashIdentity.Reference) > let rec f = function > | TyVar (_,{contents=Some x}) -> f x > | TyVar (x,_) -> TV m.[[x.name]] > | TyPrim x -> TPrim x > | TyArray x -> TArray (f x) > | TyLayout(a,b) -> TLayout(f a,b) > | TyInl(a,b) -> let i = m.Count in m.Add(a.name,i); TArrow(i,f b) > | TyFun(a,b,t) -> TFun(f a, f b, t) > | _ -> failwith "Compiler error: The base type in Infer is not > supported in the prepass yet." > f x > > List.fold (fun (top_env : PrepassTopEnv) (k, x) -> > {top_env with ty = Map.add k ((prepassPrepass -1 0 "<base_types>" > top_env).base_type (convert_infer_to_prepass x)) top_env.ty} > ) top_env_emptyPrepass (base_types default_env) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## PartEval > > ── fsharp ────────────────────────────────────────────────────────────────────── > // #r > @"../../../../../../../.nuget/packages/softcircuits.ordereddictionary/3.2.0/lib/ > net8.0/SoftCircuits.OrderedDictionary.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > // open System > open System.Collections.Generic > // open SoftCircuits.Collections > // open Common > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Tag > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Tag = int > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### L<'a,'b when 'a: equality and 'a: comparison> > > ── fsharp ────────────────────────────────────────────────────────────────────── > type [[<CustomComparison;CustomEquality>]] L<'a,'b when 'a: equality and 'a: > comparison> = > | L of 'a * 'b > > override a.Equals(b) = > match b with > | :? L<'a,'b> as b -> match a,b with L(a,_), L(b,_) -> a = b > | _ -> false > override a.GetHashCode() = match a with L(a,_) -> hash a > interface System.IComparable with > member a.CompareTo(b) = > match b with > | :? L<'a,'b> as b -> match a,b with L(a,_), L(b,_) -> compare a b > | _ -> raise <| System.ArgumentException "Invalid comparison for T." > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### H<'a when 'a : equality> > > ── fsharp ────────────────────────────────────────────────────────────────────── > type H<'a when 'a : equality>(x : 'a) = > let h = hash x > > member _.Item = x > override _.Equals(b) = > match b with > | :? H<'a> as b -> System.Object.ReferenceEquals(x,b.Item) > | _ -> false > override _.GetHashCode() = h > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### StackSize > > ── fsharp ────────────────────────────────────────────────────────────────────── > type StackSize = int > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Nominal > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Nominal = {|body : TPrepass; id : GlobalId; name : string|} ConsedNode // > TODO: When the time comes to implement incremental compilation, make the `body` > field a weak reference. > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PartEvalMacro > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PartEvalMacro = Text of string | Type of Ty | TypeLit of Ty > and Ty = > | YVoid > | YB > | YLit of Literal > | YSymbol of string > | YPair of Ty * Ty > | YTypeFunction of body : TPrepass * ty : Ty [[]] * term_stack_size : > StackSize * ty_stack_size : StackSize > | YExists > | YForall > | YRecord of Map<int * string, Ty> > | YPrim of PrimitiveType > | YArray of Ty > | YFun of Ty * Ty * FunType > | YMacro of PartEvalMacro list > | YNominal of Nominal > | YApply of Ty * Ty > | YLayout of Ty * Layout > | YUnion of Union > | YMetavar of Id > and Data = > | DB > | DSymbol of string > | DTLit of Literal > | DPair of Data * Data > | DFunction of body : E * annot : TPrepass option * term : Data [[]] * ty : > Ty [[]] * term_stack_size : StackSize * ty_stack_size : StackSize > | DForall of body : E * term : Data [[]] * ty : Ty [[]] * term_stack_size : > StackSize * ty_stack_size : StackSize > | DExists of vars_type : Ty [[]] * term : Data > | DRecord of Map<int * string, Data> > | DLit of Literal > | DUnion of Data * Union > | DNominal of Data * Ty > | DV of TyV > | DHashSet of HashSet<Data> > | DHashMap of OrderedDictionary<Data,Data> * bool ref > and TyV = L<Tag,Ty> > // Unions always go through a join point which enables them to be compared via > ref eqaulity. > // tags and tag_cases are straightforward mapping from cases for the sake of > efficiency. > and Union = {|cases : Map<int * string, Ty>; layout : UnionLayout; tags : > Dictionary<string, int>; tag_cases : (string * Ty) [[]]; is_degenerate : bool|} > H > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TermVar > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TermVar = > | WV of TyV > | WLit of Literal > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### RData > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RData = > | ReB > | RePair of ConsedNode<RData * RData> > | ReSymbol of string > | ReFunction of ConsedNode<E * RData [[]] * Ty [[]]> // T option and stack > sizes are entirely dependent on the body. And unlike in v0.09/v0.1 there are no > reified join points. > | ReForall of ConsedNode<E * RData [[]] * Ty [[]]> > | ReExists of ConsedNode<Ty [[]] * RData> > | ReRecord of ConsedNode<Map<int * string, RData>> > | ReLit of Literal > | ReTLit of Literal > | ReUnion of ConsedNode<RData * Union> > | ReNominal of ConsedNode<RData * Ty> > | ReV of ConsedNode<Tag * Ty> > | ReHashMap of ConsedNode<(RData * RData)[[]]> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Trace > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Trace = Range list > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### JoinPointKey > > ── fsharp ────────────────────────────────────────────────────────────────────── > type JoinPointKey = > | JPMethod of (string ConsedNode * E) * ConsedNode<RData [[]] * Ty [[]]> > | JPClosure of (string ConsedNode * E) * ConsedNode<RData [[]] * Ty [[]] * > Ty> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### JoinPointCall > > ── fsharp ────────────────────────────────────────────────────────────────────── > type JoinPointCall = JoinPointKey * TyV [[]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### CodeMacro > > ── fsharp ────────────────────────────────────────────────────────────────────── > type CodeMacro = > | CMText of string > | CMTerm of Data > | CMType of Ty > | CMTypeLit of Ty > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TypedBind > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TypedBind = > | TyLet of Data * Trace * TypedOp > | TyLocalReturnOp of Trace * TypedOp * Data > | TyLocalReturnData of Data * Trace > > and TypedOp = > | TyMacro of CodeMacro list > | TyOp of Op * Data list > | TyUnionBox of string * Data * Union > | TyUnionUnbox of TyV list * Union * Map<string,Data list * TypedBind [[]]> > * TypedBind [[]] option > | TyIntSwitch of TyV * TypedBind [[]] [[]] * TypedBind [[]] > | TyToLayout of Data * Ty > | TyLayoutIndexAll of TyV > | TyLayoutIndexByKey of TyV * string > | TyLayoutMutableSet of TyV * string list * Data > | TyFailwith of Ty * Data > | TyApply of TyV * Data > | TyConv of Ty * Data > | TySizeOf of Ty > | TyArrayLiteral of Ty * Data list > | TyArrayCreate of Ty * Data > | TyArrayLength of Ty * Data > | TyStringLength of Ty * Data > | TyIf of cond: Data * tr: TypedBind [[]] * fl: TypedBind [[]] > | TyWhile of cond: JoinPointCall * TypedBind [[]] > | TyDo of TypedBind [[]] > | TyIndent of TypedBind [[]] > | TyJoinPoint of JoinPointCall > | TyBackend of (string ConsedNode * E) * ConsedNode<RData [[]] * Ty [[]]> * > Range > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### UnionRewrite > > ── fsharp ────────────────────────────────────────────────────────────────────── > type UnionRewrite = UnionData of string * Data | UnionBlockers of string Set > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### LangEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type LangEnv = { > trace : Trace > seq : ResizeArray<TypedBind> > cse : Dictionary<TypedOp, Data> list > unions : Map<TyV, UnionRewrite> > i : int ref > env_global_type : Ty [[]] > env_global_term : Data [[]] > env_stack_type : Ty [[]] > env_stack_term : Data [[]] > backend : string ConsedNode > globals : ResizeArray<string> > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PartEvalTopEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PartEvalTopEnv = { > prototypes_instances : Dictionary<GlobalId * GlobalId, E> > nominals : Dictionary<GlobalId, Nominal> > backend : string > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PartEvalTypeError > > ── fsharp ────────────────────────────────────────────────────────────────────── > exception PartEvalTypeError of Trace * string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### raise_type_error > > ── fsharp ────────────────────────────────────────────────────────────────────── > let raise_type_error (d: LangEnv) x = raise (PartEvalTypeError(d.trace,x)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### data_to_rdata > > ── fsharp ────────────────────────────────────────────────────────────────────── > let data_to_rdata (d: LangEnv) (hc : HashConsTable) call_data = > let hc x = hc.Add x > let m = Dictionary(HashIdentity.Reference) > let call_args = ResizeArray() > let rec f x = > memoize m (function > | DPair(a,b) -> RePair(hc(f a, f b)) > | DSymbol a -> ReSymbol a > | DFunction(a,_,b,c,_,_) -> ReFunction(hc(a,Array.map f b,c)) > | DForall(a,b,c,_,_) -> ReFunction(hc(a,Array.map f b,c)) > | DExists(a,b) -> ReExists(hc(a,f b)) > | DRecord l -> ReRecord(hc(Map.map (fun _ -> f) l)) > | DV(L(_,ty) as t) -> call_args.Add t; ReV(hc > (call_args.Count-1,ty)) > | DLit a -> ReLit a > | DTLit a -> ReTLit a > | DUnion(a,b) -> ReUnion(hc(f a,b)) > | DNominal(a,b) -> ReNominal(hc(f a,b)) > | DB -> ReB > | DHashMap(x,is_writable) when is_writable.Value = false -> x |> > Seq.map (fun kv -> f kv.Key, f kv.Value) |> Seq.toArray |> hc |> ReHashMap > | DHashMap _ -> raise_type_error d "The mutable compile time HashMap > needs to be made immutable before it can be passed through a join point." > | DHashSet _ -> raise_type_error d "The mutable compile-time HashSet > cannot be passed through join points." > ) x > let x = Array.map f call_data > call_args.ToArray(),x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### rename_global_term > > ── fsharp ────────────────────────────────────────────────────────────────────── > // This rename is a consideration for when I do incremental compilation. > // In order to allow them to be cleaned by the garbage collection, I do not want > the > // references to unused nodes to end up in anywhere other than join point keys > (which will be weak). > let rename_global_term (s : LangEnv) = > let m = Dictionary(HashIdentity.Reference) > let rec f x = > memoize m (function > | DPair(a,b) -> DPair(f a, f b) > | DForall(body,a,b,c,d) -> DForall(body,Array.map f a,b,c,d) > | DFunction(body,annot,a,b,c,d) -> DFunction(body,annot,Array.map f > a,b,c,d) > | DExists(annot,a) -> DExists(annot, f a) > | DRecord l -> DRecord(Map.map (fun _ -> f) l) > | DV(L(_,ty)) -> let x = DV(L(s.i.Value,ty)) in s.i.Value <- > s.i.Value + 1; x > | DUnion(a,b) -> DUnion(f a,b) > | DNominal(a,b) -> DNominal(f a,b) > | DSymbol _ | DLit _ | DTLit _ | DB as x -> x > | DHashMap(x,is_writable) when is_writable.Value = false -> > let q = OrderedDictionary(HashIdentity.Reference) > x |> Seq.iter (fun kv -> q.Add(f kv.Key, f kv.Value)) > DHashMap(q,is_writable) > | DHashMap _ -> raise_type_error s "The mutable compile time HashMap > needs to be made immutable before it can be renamed." > | DHashSet _ -> raise_type_error s "The mutable compile-time > HashSets cannot be renamed." > ) x > {s with env_global_term = Array.map f s.env_global_term} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### data_free_vars > > ── fsharp ────────────────────────────────────────────────────────────────────── > let data_free_vars call_data = > let m = HashSet(HashIdentity.Reference) > let free_vars = ResizeArray() > let rec f x = > if m.Add x then > match x with > | DPair(a,b) -> f a; f b > | DForall(_,a,_,_,_) | DFunction(_,_,a,_,_,_) -> Array.iter f a > | DRecord l -> Map.iter (fun _ -> f) l > | DV(L _ as t) -> free_vars.Add t > | DExists(_,a) | DUnion(a,_) | DNominal(a,_) -> f a > | DSymbol _ | DLit _ | DTLit _ | DB -> () > | DHashSet x -> Seq.iter f x > | DHashMap(x,_) -> x |> Seq.iter (fun kv -> f kv.Value) > f call_data > free_vars.ToArray() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### data_free_vars_replace > > ── fsharp ────────────────────────────────────────────────────────────────────── > let data_free_vars_replace s (d : Dictionary<TyV,TyV>) (x : Data) = > let m = Dictionary(HashIdentity.Reference) > let rec f x = > memoize m (function > | DPair(a,b) -> DPair(f a, f b) > | DForall(body,a,b,c,d) -> DForall(body,Array.map f a,b,c,d) > | DFunction(body,annot,a,b,c,d) -> DFunction(body,annot,Array.map f > a,b,c,d) > | DExists(annot,a) -> DExists(annot, f a) > | DRecord l -> DRecord(Map.map (fun _ -> f) l) > | DV(tyv) -> DV(d[[tyv]]) > | DUnion(a,b) -> DUnion(f a,b) > | DNominal(a,b) -> DNominal(f a,b) > | DSymbol _ | DLit _ | DTLit _ | DB as x -> x > | DHashMap(x,is_writable) -> > let q = OrderedDictionary(HashIdentity.Reference) > x |> Seq.iter (fun kv -> q.Add(f kv.Key, f kv.Value)) > DHashMap(q,ref is_writable.Value) > | DHashSet _ -> > raise_type_error s "The mutable compile-time HashSets cannot > have their free vars replaced." > ) x > f x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### (|C|) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (|C|) (x : _ ConsedNode) = x.node > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### (|C'|) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (|C'|) (x : _ ConsedNode) = x.node, x.tag > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### rdata_free_vars > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rdata_free_vars call_data = > let m = HashSet(HashIdentity.Structural) > let free_vars = ResizeArray() > let rec g = function // Note: Using the same scheme as in `data_free_vars` > would give wrong results here. Comparing the tags instead is a necessity. > | RePair(C'((a,b),tag)) -> if m.Add tag then g a; g b > | ReForall(C'((_,a,_),tag)) | ReFunction(C'((_,a,_),tag)) -> if m.Add > tag then Array.iter g a > | ReRecord(C'(l,tag)) -> if m.Add tag then Map.iter (fun _ -> g) l > | ReV(C'((a,b),tag)) -> if m.Add tag then free_vars.Add(L(a,b)) > | ReExists(C'((_,a),tag)) | ReUnion(C'((a,_),tag)) | > ReNominal(C'((a,_),tag)) -> if m.Add tag then g a > | ReHashMap(C'(x,tag)) -> if m.Add tag then Array.iter (fun (k,v) -> g > k; g v) x > | ReSymbol _ | ReLit _ | ReTLit _ | ReB -> () > Array.iter g call_data > free_vars.ToArray() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### data_term_vars' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let data_term_vars' call_data = > let term_vars = ResizeArray(64) > let rec f = function > | DPair(a,b) -> f a; f b > | DForall(_,a,_,_,_) | DFunction(_,_,a,_,_,_) -> Array.iter f a > | DRecord l -> Map.iter (fun _ -> f) l > | DLit _ | DV _ as x -> term_vars.Add(x) > | DExists(_,a) | DUnion(a,_) | DNominal(a,_) -> f a > | DSymbol _ | DTLit _ | DB -> () > | DHashSet x -> Seq.iter f x > | DHashMap(x,_) -> x |> Seq.iter (fun kv -> f kv.Value) > f call_data > term_vars.ToArray() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### data_nominals > > ── fsharp ────────────────────────────────────────────────────────────────────── > let data_nominals call_data = > let term_vars = ResizeArray(64) > let rec f = function > | DPair(a,b) -> f a; f b > | DForall(_,a,_,_,_) | DFunction(_,_,a,_,_,_) -> Array.iter f a > | DRecord l -> Map.iter (fun _ -> f) l > | DLit _ | DV _ > | DExists _ | DUnion _ | DNominal _ as x -> term_vars.Add(x) > | DSymbol _ | DTLit _ | DB -> () > | DHashSet x -> Seq.iter f x > | DHashMap(x,_) -> x |> Seq.iter (fun kv -> f kv.Value) > f call_data > term_vars.ToArray() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### data_term_vars > > ── fsharp ────────────────────────────────────────────────────────────────────── > let data_term_vars call_data = > let term_vars = ResizeArray(64) > let rec f = function > | DPair(a,b) -> f a; f b > | DForall(_,a,_,_,_) | DFunction(_,_,a,_,_,_) -> Array.iter f a > | DRecord l -> Map.iter (fun _ -> f) l > | DLit x -> term_vars.Add(WLit x) > | DV x -> term_vars.Add(WV x) > | DExists(_,a) | DUnion(a,_) | DNominal(a,_) -> f a > | DSymbol _ | DTLit _ | DB -> () > | DHashSet x -> Seq.iter f x > | DHashMap(x,_) -> x |> Seq.iter (fun kv -> f kv.Value) > f call_data > term_vars.ToArray() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### lit_to_primitive_type > > ── fsharp ────────────────────────────────────────────────────────────────────── > let lit_to_primitive_type = function > | LitUInt8 _ -> UInt8T > | LitUInt16 _ -> UInt16T > | LitUInt32 _ -> UInt32T > | LitUInt64 _ -> UInt64T > | LitInt8 _ -> Int8T > | LitInt16 _ -> Int16T > | LitInt32 _ -> Int32T > | LitInt64 _ -> Int64T > | LitFloat32 _ -> Float32T > | LitFloat64 _ -> Float64T > | LitBool _ -> BoolT > | LitString _ -> StringT > | LitChar _ -> CharT > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### lit_to_ty > > ── fsharp ────────────────────────────────────────────────────────────────────── > let lit_to_ty x = lit_to_primitive_type x |> YPrim > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_tco_compatible > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_tco_compatible = function > | TyApply _ | TyJoinPoint _ | TyArrayLiteral _ | TyUnionBox _ | TyToLayout _ > | TyIf _ | TyIntSwitch _ | TyUnionUnbox _ | TyArrayCreate _ | TyFailwith _ > -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### seq_apply > > ── fsharp ────────────────────────────────────────────────────────────────────── > let seq_apply (d: LangEnv) end_dat = > let inline end_ () = d.seq.Add(TyLocalReturnData(end_dat,d.trace)) > if d.seq.Count > 0 then > match d.seq.[[d.seq.Count-1]] with > | TyLet(end_dat',a,b) when > System.Object.ReferenceEquals(end_dat,end_dat') && is_tco_compatible b -> > d.seq.[[d.seq.Count-1]] <- TyLocalReturnOp(a,b,end_dat') > | _ -> end_() > else end_() > d.seq.ToArray() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### cse_tryfind > > ── fsharp ────────────────────────────────────────────────────────────────────── > let cse_tryfind (d: LangEnv) key = > d.cse |> List.tryPick (fun x -> > match x.TryGetValue key with > | true, v -> Some v > | _ -> None > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### cse_add > > ── fsharp ────────────────────────────────────────────────────────────────────── > let cse_add (d: LangEnv) k v = (List.head d.cse).Add(k,v) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_ty > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_ty x = > let rec f prec x = > let p = p prec > match x with > | YVoid -> "void" > | YB -> "()" > | YLit x -> show_lit x > | YPair(a,b) -> p 25 (sprintf "%s * %s" (f 25 a) (f 24 b)) > | YSymbol x -> sprintf ".%s" x > | YTypeFunction _ -> p 0 (sprintf "? => ?") > | YForall -> p 0 (sprintf "forall ?. ?") > | YExists -> p 0 (sprintf "exists ?. ?") > | YRecord l -> sprintf "{%s}" (l |> Map.toList |> List.map (fun > ((_,k),v) -> sprintf "%s : %s" k (f -1 v)) |> String.concat "; ") > | YUnion l -> sprintf "{%s}" (l.Item.cases |> Map.toList |> List.map > (fun ((_,k),v) -> sprintf "%s : %s" k (f -1 v)) |> String.concat " | ") > | YPrim x -> show_primt x > | YArray a -> p 30 (sprintf "array_base %s" (f 30 a)) > | YFun(a,b,FT_Vanilla) -> p 20 (sprintf "%s -> %s" (f 20 a) (f 19 b)) > | YFun(a,b,FT_Pointer) -> p 20 (sprintf "fptr (%s -> %s)" (f 20 a) (f 19 > b)) > | YFun(a,b,FT_Closure) -> p 20 (sprintf "closure (%s -> %s)" (f 20 a) (f > 19 b)) > | YMacro a -> p 30 (List.map (function TypeLit a | Type a -> f -1 a | > Text a -> a) a |> String.concat "") > | YApply(a,b) -> p 30 (sprintf "%s %s" (f 29 a) (f 30 b)) > | YLayout(a,b) -> p 30 (sprintf "%s %s" (show_layout_type b) (f 30 a)) > | YNominal x -> x.node.name > | YMetavar _ -> "?" > f -1 x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_data > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_data x = > let rec f prec x = > let p = p prec > match x with > | DB -> "()" > | DPair(a,b) -> p 25 (sprintf "%s, %s" (f 25 a) (f 24 b)) > | DSymbol x -> sprintf ".%s" x > | DFunction _ -> p 20 "? -> ?" > | DForall _ -> p 0 "forall ?. ?" > | DExists(a,b) -> > let a = Array.map (show_ty >> sprintf "(%s)") a |> String.concat " " > p 0 $"exists {a}. %s{f 0 b}" > | DRecord l -> sprintf "{%s}" (l |> Map.toList |> List.map (fun > ((_,k),v) -> sprintf "%s : %s" k (f -1 v)) |> String.concat "; ") > | DLit a -> show_lit a > | DTLit a -> $"`{show_lit a}" > | DV(L(_,ty)) -> show_ty ty > | DUnion(a,_) -> f prec a > | DNominal(a,b) -> p 0 (sprintf "%s : %s" (f 0 a) (show_ty b)) > | DHashSet _ -> p 0 "<HashSet>" > | DHashMap _ -> p 0 "<HashMap>" > > f -1 x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_lit > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_lit = function > | DLit _ -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_numeric > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_numeric = function > | YPrim (UInt8T | UInt16T | UInt32T | UInt64T > | Int8T | Int16T | Int32T | Int64T > | Float32T | Float64T) -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_signed_numeric > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_signed_numeric = function > | YPrim (Int8T | Int16T | Int32T | Int64T | Float32T | Float64T) -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_non_float_primitive > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_non_float_primitive = function > | YPrim (Float32T | Float64T) -> false > | YPrim _ -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_primitive > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_primitive = function > | YPrim _ -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_string > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_string = function > | YPrim StringT -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_char > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_char = function > | YPrim CharT -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_float > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_float = function > | YPrim (Float32T | Float64T) -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_bool > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_bool = function > | YPrim BoolT -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_int > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_int = function > | YPrim (UInt32T | UInt64T | Int32T | Int64T) -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_int > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_any_int = function > | YPrim (UInt8T | UInt16T | UInt32T | UInt64T > | Int8T | Int16T | Int32T | Int64T) -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_int64 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_int64 = function > | YPrim Int64T -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_int32 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_int32 = function > | YPrim Int32T -> true > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_lit_zero > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_lit_zero = function > | DLit a -> > match a with > | LitInt8 0y | LitInt16 0s | LitInt32 0 | LitInt64 0L > | LitUInt8 0uy | LitUInt16 0us | LitUInt32 0u | LitUInt64 0UL > | LitFloat32 0.0f | LitFloat64 0.0 -> true > | _ -> false > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_lit_one > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_lit_one = function > | DLit a -> > match a with > | LitInt8 1y | LitInt16 1s | LitInt32 1 | LitInt64 1L > | LitUInt8 1uy | LitUInt16 1us | LitUInt32 1u | LitUInt64 1UL > | LitFloat32 1.0f | LitFloat64 1.0 -> true > | _ -> false > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_int_lit_zero > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_int_lit_zero = function > | DLit a -> > match a with > | LitInt8 0y | LitInt16 0s | LitInt32 0 | LitInt64 0L > | LitUInt8 0uy | LitUInt16 0us | LitUInt32 0u | LitUInt64 0UL -> true > | _ -> false > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_int_lit_one > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_int_lit_one = function > | DLit a -> > match a with > | LitInt8 1y | LitInt16 1s | LitInt32 1 | LitInt64 1L > | LitUInt8 1uy | LitUInt16 1us | LitUInt32 1u | LitUInt64 1UL -> true > | _ -> false > | _ -> false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### lit_zero > > ── fsharp ────────────────────────────────────────────────────────────────────── > let lit_zero = function > | YPrim Int8T -> LitInt8 0y > | YPrim Int16T -> LitInt16 0s > | YPrim Int32T -> LitInt32 0 > | YPrim Int64T -> LitInt64 0L > | YPrim UInt8T -> LitUInt8 0uy > | YPrim UInt16T -> LitUInt16 0us > | YPrim UInt32T -> LitUInt32 0u > | YPrim UInt64T -> LitUInt64 0UL > | YPrim Float32T -> LitFloat32 0.0f > | YPrim Float64T -> LitFloat64 0.0 > | _ -> failwith "Compiler error: Expected a numeric value." > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### vt > > ── fsharp ────────────────────────────────────────────────────────────────────── > let vt s i = if i < s.env_global_type.Length then s.env_global_type.[[i]] else > s.env_stack_type.[[i-s.env_global_type.Length]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### v > > ── fsharp ────────────────────────────────────────────────────────────────────── > let v s i = if i < s.env_global_term.Length then s.env_global_term.[[i]] else > s.env_stack_term.[[i-s.env_global_term.Length]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_trace > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_trace (s : LangEnv) r = {s with trace = r :: s.trace} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### store_term > > ── fsharp ────────────────────────────────────────────────────────────────────── > let store_term (s : LangEnv) i v = > s.env_stack_term.[[i-s.env_global_term.Length]] <- v > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### store_ty > > ── fsharp ────────────────────────────────────────────────────────────────────── > let store_ty (s : LangEnv) i v = s.env_stack_type.[[i-s.env_global_type.Length]] > <- v > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_unify > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_unify s x = > let is_metavar = HashSet() > let rec f = function > | YB, YB | YExists, YExists | YForall, YForall -> true > | YFun(a,b,t), YFun(a',b',t') -> t = t' && f (a,a') && f (b,b') > | YApply(a,b), YApply(a',b') > | YPair(a,b), YPair(a',b') -> f (a,a') && f (b,b') > | YSymbol a, YSymbol b -> a = b > | YTypeFunction(a,b,c,d), YTypeFunction(a',b',c',d') -> a = a' && > Array.forall2 (fun b b' -> f (b,b')) b b' && c = c' && d = d' > | YRecord a, YRecord a' -> Map.forall (fun k v' -> match Map.tryFind k a > with Some v -> f (v, v') | None -> false) a' > | YPrim a, YPrim a' -> a = a' > | YArray a, YArray a' -> f (a, a') > | YMacro a, YMacro a' -> > List.forall2 (fun a a' -> > match a, a' with > | Text a, Text a' -> a = a' > | Type a, Type a' -> f (a,a') > | _ -> false > ) a a' > | YNominal a, YNominal a' -> a = a' > | YLayout(a,b), YLayout(a',b') -> f (a,a') && b = b' > | YUnion a, YUnion a' -> a = a' > | YLit a, YLit b -> a = b > | a, YMetavar i -> (is_metavar.Add i && (store_ty s i a; true)) || a = > vt s i > | _ -> false > f x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PartEvalResult > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PartEvalResult = { > join_point_method : Dictionary<string ConsedNode * > E,Dictionary<ConsedNode<RData [[]] * Ty [[]]>,TypedBind [[]] option * Ty option > * string option> * HashConsTable> > join_point_closure : Dictionary<string ConsedNode * > E,Dictionary<ConsedNode<RData [[]] * Ty [[]] * Ty>,(Data * TypedBind [[]]) > option> * HashConsTable> > ty_to_data : Ty -> Data > nominal_apply : Ty -> Ty > globals : ResizeArray<string> > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### peval > > ── fsharp ────────────────────────────────────────────────────────────────────── > let peval (env : PartEvalTopEnv) (x : E) = > let join_point_method = Dictionary(HashIdentity.Structural) > let join_point_closure = Dictionary(HashIdentity.Structural) > let join_point_type = Dictionary(HashIdentity.Structural) > let backend_strings = HashConsTable() > > let rec ty_to_data s x = > let f = ty_to_data s > match x with > | YVoid -> raise_type_error s "Compiler error: Cannot construct an > instance of a void type." > | YB -> DB > | YPair(a,b) -> DPair(f a, f b) > | YSymbol a -> DSymbol a > | YRecord l -> DRecord(Map.map (fun _ -> f) l) > | YForall | YExists | YUnion _ | YLayout _ | YPrim _ | YArray _ | YFun _ > | YMacro _ as x -> let r = DV(L(s.i.Value,x)) in s.i.Value <- s.i.Value + 1; r > | YNominal _ | YApply _ as a -> DNominal(nominal_type_apply s a |> > ty_to_data s, a) > | YLit x -> DTLit x > | YTypeFunction _ -> raise_type_error s "Cannot turn a type function > into a runtime variable." > | YMetavar _ -> raise_type_error s "Compiler error: Cannot turn a > metavar into a runtime variable." > and assert_ty_lit s = function > | YSymbol _ | YLit _ as x -> x > | YNominal _ | YApply _ as x -> nominal_type_apply s x |> assert_ty_lit > s > | x -> raise_type_error s <| sprintf "Expected a type literal or a > symbol.\nGot: %s" (show_ty x) > and push_typedop_no_rewrite d op ret_ty = > let ret = ty_to_data d ret_ty > d.seq.Add(TyLet(ret,d.trace,op)) > ret > and push_typedop (d: LangEnv) key ret_ty = > match cse_tryfind d key with > | Some x -> x > | None -> > let x = ty_to_data d ret_ty > d.seq.Add(TyLet(x,d.trace,key)) > cse_add d key x > x > and push_op_no_rewrite' (d: LangEnv) op l ret_ty = push_typedop_no_rewrite d > (TyOp(op,l)) ret_ty > and push_op_no_rewrite d op a ret_ty = push_op_no_rewrite' d op [[a]] ret_ty > and push_binop_no_rewrite d op (a,b) ret_ty = push_op_no_rewrite' d op > [[a;b]] ret_ty > and push_triop_no_rewrite d op (a,b,c) ret_ty = push_op_no_rewrite' d op > [[a;b;c]] ret_ty > > and push_op' d op a ret_ty = push_typedop d (TyOp(op, a)) ret_ty > and push_op d op a ret_ty = push_op' d op [[a]] ret_ty > and push_binop d op (a,b) ret_ty = push_op' d op [[a;b]] ret_ty > and push_triop d op (a,b,c) ret_ty = push_op' d op [[a;b;c]] ret_ty > and closure_env s (body,annot,gl_term,gl_ty,sz_term,sz_ty) = { > trace = s.trace > seq = ResizeArray() > cse = [[Dictionary(HashIdentity.Structural)]] > unions = Map.empty > i = ref 0 > env_global_type = gl_ty > env_global_term = gl_term > env_stack_type = Array.zeroCreate<_> sz_ty > env_stack_term = Array.zeroCreate<_> sz_term > backend = s.backend > globals = s.globals > } > and closure_convert s (body,annot,gl_term,gl_ty,sz_term,sz_ty as args) = > let join_point_key, call_args, fun_ty = > let s : LangEnv = closure_env s args > let domain, range, fun_ty = > match ty s annot with > | YFun(a,b,_) as x -> a,b,x > | annot -> raise_type_error s <| sprintf "Expected a function > type in annotation during closure conversion. Got: %s" (show_ty annot) > let dict, hc_table = memoize join_point_closure (fun _ -> > Dictionary(HashIdentity.Structural), HashConsTable()) (s.backend, body) > let call_args, env_global_value = data_to_rdata s hc_table gl_term > let join_point_key = hc_table.Add(env_global_value, > s.env_global_type, fun_ty) > > match fun_ty with > | YFun(_,_,FT_Pointer) when call_args.Length <> 0 -> > raise_type_error s "Function pointers shouldn't have any runtime free variables > in their environment." > | _ -> () > > match dict.TryGetValue(join_point_key) with > | true, _ -> () > | false, _ -> > let s = rename_global_term s > let domain_data = ty_to_data s domain > s.env_stack_term.[[0]] <- domain_data > dict.[[join_point_key]] <- None > let seq,ty = term_scope'' s body (Some fun_ty) > dict.[[join_point_key]] <- Some(domain_data, seq) > let ty = > match ty with > | YRecord a -> > a > |> Seq.map (fun (KeyValue ((i, k), v)) -> > let i = > match range with > | YRecord a -> > a |> Map.tryPick (fun (i', k') _ -> if k = > k' then Some i' else None) > | _ -> None > |> Option.defaultValue i > (i, k), v > ) > |> Map.ofSeq > |> YRecord > | _ -> ty > if range <> ty then raise_type_error s <| sprintf "The > annotation of the function does not match its body's type.\nGot: %s\nExpected: > %s" (show_ty ty) (show_ty range) > join_point_key, call_args, fun_ty > push_typedop s > (TyJoinPoint(JPClosure((s.backend,body),join_point_key),call_args)) fun_ty, > fun_ty > and data_to_ty s x = > let m = Dictionary(HashIdentity.Reference) > let rec f x = > memoize m (function > | DPair(a,b) -> YPair(f a, f b) > | DSymbol a -> YSymbol a > | DRecord l -> YRecord(Map.map (fun _ -> f) l) > | DUnion(_,a) -> YUnion a > | DNominal(_,a) | DV(L(_,a)) -> a > | DLit x -> lit_to_ty x > | DTLit x -> YLit x > | DB -> YB > | DFunction(body,Some annot,gl_term,gl_ty,sz_term,sz_ty) -> ty > (closure_env s (body,annot,gl_term,gl_ty,sz_term,sz_ty)) annot > | DExists _ -> YExists > | DFunction(_,None,_,_,_,_) -> raise_type_error s "Cannot > convert a function that is not annotated into a type." > | DForall _ -> YForall > | DHashSet _ -> raise_type_error s "Cannot convert a compile > time HashSet into a type." > | DHashMap _ -> raise_type_error s "Cannot convert a compile > time HashMap into a type." > ) x > f x > and dyn do_lit s x = > let m = Dictionary(HashIdentity.Reference) > let mutable dirty = false > let rec f x = > memoize m (function > | DPair(a,b) -> DPair(f a, f b) > | DB | DV _ | DTLit _ | DSymbol _ as a -> a > | DRecord l -> DRecord(Map.map (fun _ -> f) l) > | DNominal(DUnion(DPair(DSymbol k,v),b),b') -> dirty <- true; > push_typedop_no_rewrite s (TyUnionBox(k,f v,b)) b' > | DUnion _ -> raise_type_error s "Compiler error: Malformed > union" > | DNominal(a,b) -> DNominal(f a,b) > | DLit (LitString _ as v) -> dirty <- true; push_op s Dyn x > (lit_to_ty v) > | DLit v as x -> if do_lit then dirty <- true; > push_op_no_rewrite s Dyn x (lit_to_ty v) else x > | DFunction(body,Some annot,term',ty',sz_term,sz_ty) -> dirty <- > true; closure_convert s (body,annot,term',ty',sz_term,sz_ty) |> fst > | DFunction(_,None,_,_,_,_) -> raise_type_error s "Cannot > convert a function that is not annotated into a runtime variable." > | DExists _ -> raise_type_error s "Cannot dyn an existential > into a runtime var." > | DForall _ -> raise_type_error s "Cannot dyn a forall into a > runtime var." > | DHashSet _ -> raise_type_error s "Cannot dyn a compile time > HashSet into a runtime var." > | DHashMap _ -> raise_type_error s "Cannot dyn a compile time > HashMap into a runtime var." > ) x > let v = f x > if dirty then v else x > and term_real_nominal s x = > let s = {s with seq=ResizeArray(); > cse=Dictionary(HashIdentity.Structural) :: s.cse} > term s x |> data_to_ty s > and term_scope'' s x fun_ty = > let x = term s x |> dyn false s > let x = > match x with > | DRecord c -> > c > |> Seq.map (fun (KeyValue ((i, k), v)) -> > let i = > match fun_ty with > | Some (YFun (YNominal _, YRecord a, _) | YRecord a) -> > a |> Map.tryPick (fun (i', k') _ -> if k = k' then > Some i' else None) > | _ -> None > |> Option.defaultValue i > (i, k), v > ) > |> Map.ofSeq > |> DRecord > | _ -> x > let x_ty = data_to_ty s x > seq_apply s x, x_ty > and term_scope' s cse x = term_scope'' {s with seq=ResizeArray(); cse=cse :: > s.cse} x None > and term_scope s x = term_scope' s (Dictionary(HashIdentity.Structural)) x > and nominal_type_apply s x = > match x with > | YApply(a,b) -> > match nominal_type_apply s a with > | YTypeFunction(body,gl_ty,sz_term,sz_ty) -> > let s = > {s with > env_global_type = gl_ty > env_global_term = [[||]] > env_stack_type = Array.zeroCreate<_> sz_ty > env_stack_term = Array.zeroCreate<_> sz_term > } > s.env_stack_type.[[0]] <- b > ty s body > | a -> raise_type_error s <| sprintf "Expected a type level function > in nominal application.\nGot: %s" (show_ty a) > | YNominal a -> ty s a.node.body > | _ -> raise_type_error s <| sprintf "Expected a nominal or a deferred > type apply.\nGot: %s" (show_ty x) > and ty s x = > match x with > | TPatternRef _ -> failwith "Compiler error: TPatternRef should have > been eliminated during the prepass." > | TForall _ | TArrow _ | TJoinPoint _ -> failwith "Compiler error: > Should have been transformed during the prepass." > | TMetaV i -> YMetavar i > | TArrow'(scope,i,body) -> > assert (i = scope.ty.free_vars.Length) > YTypeFunction(body,Array.map (vt s) > scope.ty.free_vars,scope.term.stack_size,scope.ty.stack_size) > | TForall' _ -> YForall > | TExists -> YExists > | TJoinPoint'(r,scope,body) -> > let env_global_type = Array.map (vt s) scope.ty.free_vars > let env_global_term = Array.map (v s) scope.term.free_vars > > let dict, hc_table = memoize join_point_type (fun _ -> > Dictionary(HashIdentity.Structural), HashConsTable()) body > let join_point_key = hc_table.Add(env_global_type) > match dict.TryGetValue(join_point_key) with > | true, Some ret_ty -> ret_ty > | true, None -> raise_type_error (add_trace s r) "Type join points > must not be unboxed during their definition." > | false, _ -> > assert (0 = scope.term.free_vars.Length) > let s : LangEnv = { > trace = r :: s.trace > seq = ResizeArray() > cse = [[Dictionary(HashIdentity.Structural)]] > unions = Map.empty > i = ref 0 > env_global_type = env_global_type > env_global_term = env_global_term > env_stack_type = Array.zeroCreate<_> scope.ty.stack_size > env_stack_term = Array.zeroCreate<_> scope.term.stack_size > backend = s.backend > globals = s.globals > } > let s = rename_global_term s > dict.[[join_point_key]] <- None > let ret_ty = ty s body > dict.[[join_point_key]] <- Some ret_ty > ret_ty > | TB _ -> YB > | TLit(_,x) -> YLit x > | TV i -> vt s i > | TPair(_,a,b) -> YPair(ty s a, ty s b) > | TFun(a,b,t) -> YFun(ty s a, ty s b,t) > | TModule a -> > YRecord( > a > |> Seq.mapi (fun i (KeyValue (k, v)) -> (i, k), (v |> ty s)) > |> Map.ofSeq > ) > | TRecord(_,a) -> YRecord(Map.map (fun _ -> ty s) a) > | TUnion(_,(a,b)) -> > let tags = Dictionary() > let tag_cases = Array.zeroCreate (Map.count a) > let mutable is_degenerate = true > let cases = > Map.fold (fun cases (i,k) v -> > let v = Option.defaultValue (fst v) (snd v) // If the union > case is generalized, use the specialized destructor instead of the constructor > to evaluate the type. > match ty s v with > | YVoid -> cases > | v -> > is_degenerate <- is_degenerate && match v with YB -> > true | _ -> false > tags.[[k]] <- i > tag_cases.[[i]] <- (k,v) > Map.add (i,k) v cases > ) Map.empty a > YUnion(H {|cases=cases; layout=b; tags=tags; tag_cases=tag_cases; > is_degenerate=is_degenerate|}) > | TTypecase(r,a,b) -> > let s = add_trace s r > let a = ty s a > let rec loop = function > | (a',b) :: rest -> if is_unify s (a,ty s a') then Some(ty s b) > else loop rest > | [[]] -> None > match loop b with > | Some r -> r > | None -> YVoid > | TSymbol(_,a) -> YSymbol a > | TApply(r,a,b) -> > let s = add_trace s r > match ty s a with > | YRecord a -> > match ty s b with > | YSymbol b -> > match a |> Map.tryPick (fun (_, k) v -> if k = b then Some v > else None) with > | Some x -> x > | None -> raise_type_error s <| sprintf "Cannot find key %s > in the record." b > | b -> raise_type_error s <| sprintf "Expected a symbol in the > record application.\nGot: %s" (show_ty b) > | YMetavar _ | YNominal _ | YApply _ as a -> YApply(a,ty s b) > | YTypeFunction(body,gl_ty,sz_term,sz_ty) -> > let b = ty s b > let s = > {s with > env_global_type = gl_ty > env_global_term = [[||]] > env_stack_type = Array.zeroCreate<_> sz_ty > env_stack_term = Array.zeroCreate<_> sz_term > } > s.env_stack_type.[[0]] <- b > ty s body > | a -> raise_type_error s <| sprintf "Expected a record, nominal or > a type function. Or a metavar when in typecase.\nGot: %s" (show_ty a) > | TPrim a -> YPrim a > | TTerm(_,a) -> term_real_nominal s a > | TMacro(r,a) -> > let s = add_trace s r > YMacro(a |> List.map (function TMText a -> Text a | TMType a -> > Type(ty s a) | TMLitType a -> TypeLit(ty s a |> assert_ty_lit s))) > | TNominal i -> YNominal env.nominals.[[i]] > | TArray a -> YArray(ty s a) > | TLayout(a,b) -> YLayout(ty s a,b) > and term (s : LangEnv) x = > > let global' = > let has_added = HashSet s.globals > fun x -> if has_added.Add(x) then s.globals.Add x > > let term2 s a b = term s a, term s b > let term3 s a b c = term s a, term s b, term s c > let type_apply s a b = > match a with > | DForall(body,gl_term,gl_ty,sz_term,sz_ty) -> > let s = > {s with > env_global_type = gl_ty > env_global_term = gl_term > env_stack_type = Array.zeroCreate<_> sz_ty > env_stack_term = Array.zeroCreate<_> sz_term > } > s.env_stack_type.[[0]] <- b > term s body > | DV(L(_,YForall)) -> raise_type_error s <| sprintf "Cannot apply a > runtime forall during the partial evaluation stage." > | a -> raise_type_error s <| sprintf "Expected a forall.\nGot: %s" > (show_data a) > > let rec apply s = function > | DNominal(DUnion _,_), _ -> raise_type_error s "Unions cannot be > applied." > | DNominal(a,_), b -> apply s (a,b) > | DRecord a, DSymbol b -> > match a |> Map.tryPick (fun (_, k) v -> if k = b then Some v > else None) with > | Some a -> a > | None -> raise_type_error s <| sprintf "Cannot find the key %s > inside the record." b > | DFunction(body,_,gl_term,gl_ty,sz_term,sz_ty), b -> > let s : LangEnv = > {s with > env_global_type = gl_ty > env_global_term = gl_term > env_stack_type = Array.zeroCreate<_> sz_ty > env_stack_term = Array.zeroCreate<_> sz_term > } > s.env_stack_term.[[0]] <- b > term s body > | DV(L(_,YForall)), _ -> raise_type_error s "Cannot apply a runtime > forall, and not with a term. Foralls have to be known at compile time and > applied with a type." > | DForall _, _ -> raise_type_error s "Cannot apply a forall with a > term." > | DV(L(_,YFun(domain,range,t) & a_ty) & a), b -> > let b = dyn false s b > let b_ty = data_to_ty s b > if domain = b_ty then push_typedop_no_rewrite s (TyApply(a,b)) > range > else raise_type_error s <| sprintf "Cannot apply an argument of > type %s to a function of type: %s" (show_ty b_ty) (show_ty a_ty) > | DV(L(i,YLayout(ty,layout)) as tyv) as a, DSymbol b -> > let key = TyLayoutIndexByKey(tyv, b) > let ret_ty = > match ty with > | YRecord r -> > match r |> Map.tryPick (fun (i, k) v -> if k = b then > Some (i,v) else None) with > | Some (_i, a) -> a > | None -> raise_type_error s <| sprintf "Cannot find the > key %s inside the layout type's record." b > | _ -> raise_type_error s <| sprintf "Expected a record > inside the layout type.\nGot: %s" (show_ty ty) > match layout with > | Heap | StackMutable | HeapMutable -> push_typedop_no_rewrite s > key ret_ty > | DV(L(_,YLayout _)), b -> raise_type_error s <| sprintf "Expected a > symbol as the index into the layout type.\nGot: %s" (show_data b) > | a,_ -> raise_type_error s <| sprintf "Expected a function, > closure, record or a layout type possibly inside a nominal.\nGot: %s" (show_data > a) > > let rec if_ s cond on_succ on_fail = > match cond with > | DLit (LitBool true) -> term s on_succ > | DLit (LitBool false) -> term s on_fail > | DV(L(_,YPrim BoolT & type_bool)) -> > let lit_tr = DLit(LitBool true) > match cse_tryfind s (TyOp(EQ, [[cond; lit_tr]])) with > | Some cond -> if_ s cond on_succ on_fail > | None -> > let lit_fl = DLit(LitBool false) > let add_rewrite_cases is_true = > let cse = Dictionary(HashIdentity.Structural) > let tr,fl = if is_true then lit_tr, lit_fl else lit_fl, > lit_tr > let inline op op cond' res = > cse.Add(TyOp(op,[[cond;cond']]),res); cse.Add(TyOp(op,[[cond';cond]]),res) > op EQ lit_tr tr; op NEQ lit_tr fl; op EQ lit_fl fl; op > NEQ lit_fl tr > cse > let tr, type_tr = term_scope' s (add_rewrite_cases true) > on_succ > let fl, type_fl = term_scope' s (add_rewrite_cases false) > on_fail > let type_tr, type_fl = > match type_tr, type_fl with > | YRecord tr, YRecord fl -> > let tr = > tr > |> Seq.map (fun (KeyValue ((i, k), v)) -> > let i = > fl |> Map.tryPick (fun (i', k') _ -> if > k = k' then Some i' else None) > |> Option.defaultValue i > (i, k), v > ) > |> Map.ofSeq > |> YRecord > > let fl = > fl > |> Seq.map (fun (KeyValue ((i, k), v)) -> > k, ((i, k), v) > ) > |> Seq.distinctBy fst > |> Seq.map snd > |> Map.ofSeq > |> YRecord > > tr, fl > > | _ -> > type_tr, type_fl > > if type_tr = type_fl then > if tr.Length = 1 && fl.Length = 1 then > match tr.[[0]], fl.[[0]] with > | TyLocalReturnOp(_,tr,_), TyLocalReturnOp(_,fl,_) > when tr = fl -> push_typedop_no_rewrite s tr type_tr > | TyLocalReturnData(tr',_), TyLocalReturnData(fl',_) > -> > match tr', fl' with > | tr, fl when tr = fl -> tr > | DLit(LitBool false), DLit(LitBool true) -> > push_binop s EQ (cond,lit_fl) type_bool > | DLit(LitBool false), fl when cond = fl -> > lit_fl > | DLit(LitBool true), fl -> // boolean or > match fl with > | DLit (LitBool false) -> cond > | _ -> if cond = fl then cond else > push_binop s BoolOr (cond,fl) type_bool > | tr, DLit(LitBool false) -> // boolean and > match tr with > | DLit(LitBool true) -> cond > | _ -> if cond = tr then cond else > push_binop s BoolAnd (cond,tr) type_bool > | _ -> push_typedop_no_rewrite s > (TyIf(cond,tr,fl)) type_tr > | _ -> push_typedop_no_rewrite s (TyIf(cond,tr,fl)) > type_tr > else push_typedop_no_rewrite s (TyIf(cond,tr,fl)) > type_tr > else raise_type_error s <| sprintf "Types in branches of If > do not match.\nGot: %s and %s" (show_ty type_tr) (show_ty type_fl) > | cond -> raise_type_error s <| sprintf "Expected a bool in > conditional.\nGot: %s" (show_data cond) > > let eq s a b = > let inline op a b = a = b > match a,b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitBool |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitBool |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitBool |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitBool |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitBool |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitBool |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitBool |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitBool |> DLit > | LitFloat32 a, LitFloat32 b -> op a b |> LitBool |> DLit > | LitFloat64 a, LitFloat64 b -> op a b |> LitBool |> DLit > | LitString a, LitString b -> op a b |> LitBool |> DLit > | LitChar a, LitChar b -> op a b |> LitBool |> DLit > | LitBool a, LitBool b -> op a b |> LitBool |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | DV(L(a,a_ty)), DV(L(b,_)) when a = b && is_non_float_primitive > a_ty -> LitBool true |> DLit > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > match a, b with > | DLit (LitBool true), x | x, DLit (LitBool true) -> x > | _ -> > if is_primitive a_ty then push_binop s EQ (a,b) (YPrim > BoolT) > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a primitive type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to have > the same primitive types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > let default_lit s (a : string) b = > let inline f string_to_val val_to_lit val_dsc = > match string_to_val a with > | true, x -> val_to_lit x > | false, _ -> raise_type_error s <| sprintf "Cannot parse the > literal as: %s" val_dsc > match b with > | YPrim Float32T -> f System.Single.TryParse LitFloat32 "f32" > | YPrim Float64T -> f System.Double.TryParse LitFloat64 "f64" > | YPrim Int8T -> f System.SByte.TryParse LitInt8 "i8" > | YPrim Int16T -> f System.Int16.TryParse LitInt16 "i16" > | YPrim Int32T -> f System.Int32.TryParse LitInt32 "i32" > | YPrim Int64T -> f System.Int64.TryParse LitInt64 "i64" > | YPrim UInt8T -> f System.Byte.TryParse LitUInt8 "u8" > | YPrim UInt16T -> f System.UInt16.TryParse LitUInt16 "u16" > | YPrim UInt32T -> f System.UInt32.TryParse LitUInt32 "u32" > | YPrim UInt64T -> f System.UInt64.TryParse LitUInt64 "u64" > | b -> raise_type_error s <| sprintf "Expected a numberic type > (f32,f64,i8,i16,i32,i64,u8,u16,u32,u64) as the type of literal.\nGot: %s" > (show_ty b) > > let lit_test s a bind on_succ on_fail = > let b = v s bind > if lit_to_ty a = data_to_ty s b then if_ s (eq s (DLit a) b) on_succ > on_fail > else term s on_fail > > let inline nan_guardf32 x = if System.Single.IsNaN x then > raise_type_error s "A 32-bit floating point operation resulting in a nan > detected at compile time." else x > let inline nan_guardf64 x = if System.Double.IsNaN x then > raise_type_error s "A 64-bit floating point operation resulting in a nan > detected at compile time." else x > > let eforall (free_vars : Scope,i,body) = > assert (free_vars.ty.free_vars.Length = i) > DForall(body,Array.map (v s) free_vars.term.free_vars,Array.map (vt > s) free_vars.ty.free_vars,free_vars.term.stack_size,free_vars.ty.stack_size) > > let efun (free_vars : Scope,i,body,annot) = > assert (free_vars.term.free_vars.Length = i) > DFunction(body,annot,Array.map (v s) > free_vars.term.free_vars,Array.map (vt s) > free_vars.ty.free_vars,free_vars.term.stack_size,free_vars.ty.stack_size) > > let enominal (r,a,b) = > let a = term s a > let b = ty s b > match nominal_type_apply s b with > | YUnion h -> > match a with > | DPair(DSymbol k, v) -> > let v_ty = data_to_ty s v > match Map.tryPick (fun (_, name') v -> if k = name' then > Some v else None) h.Item.cases with > | Some v_ty' when v_ty = v_ty' -> DNominal(DUnion(a,h),b) > | Some v_ty' -> raise_type_error s <| sprintf "For key %s, > The type of the value does not match the union case.\nGot: %s\nExpected: %s" k > (show_ty v_ty) (show_ty v_ty') > | None -> raise_type_error s <| sprintf "The union does not > have key %s.\nGot: %s" k (show_ty b) > | _ -> raise_type_error s <| sprintf "Expected key/value > pair.\nGot: %s" (show_data a) > | b' -> > let a = > match a with > | DRecord a -> > a > |> Seq.map (fun (KeyValue ((i, k), v)) -> > k, ((i, k), v) > ) > |> Seq.distinctBy fst > |> Seq.map snd > |> Map.ofSeq > |> DRecord > | _ -> a > > let a_ty = data_to_ty s a > > if a_ty = b' then DNominal(a,b) > else raise_type_error s <| sprintf "Type error in nominal > constructor.\nGot: %s\nExpected: %s" (show_ty a_ty) (show_ty b') > > let ty_union s x = > let x = ty s x > match nominal_type_apply s x with > | YUnion x -> x > | _ -> raise_type_error s <| sprintf "Expected an union.\nGot: %s" > (show_ty x) > > let ty_record s x = > match ty s x with > | YRecord l -> l > | x -> raise_type_error s <| sprintf "Expected a type record.\nGot: > %s" (show_ty x) > > let to_i32 x = > try > match x with > | LitUInt8 x -> System.Convert.ToInt32(x) > | LitUInt16 x -> System.Convert.ToInt32(x) > | LitUInt32 x -> System.Convert.ToInt32(x) > | LitUInt64 x -> System.Convert.ToInt32(x) > | LitInt8 x -> System.Convert.ToInt32(x) > | LitInt16 x -> System.Convert.ToInt32(x) > | LitInt32 x -> System.Convert.ToInt32(x) > | LitInt64 x -> System.Convert.ToInt32(x) > | x -> raise_type_error s <| sprintf "Expected an int > convertible to an i32.\nGot: %s" (show_lit x) > with :? System.OverflowException -> raise_type_error s <| sprintf > "The literal cannot be converted to an i32 as it is either too small or to > big.\nGot: %s" (show_lit x) > > let record2 (a,b) (a',b') = DRecord(Map.empty |> Map.add a b |> Map.add > a' b') > let record3 (a,b) (a',b') (a'',b'') = DRecord(Map.empty |> Map.add a b > |> Map.add a' b' |> Map.add a'' b'') > > match x with > | EPatternRef _ -> failwith "Compiler error: EPatternRef should have > been eliminated during the prepass." > | EB _ -> DB > | EV a -> v s a > | ELit(_,a) -> DLit a > | ESymbol(_,a) -> DSymbol a > | EFun _ -> failwith "Compiler error: Raw functions should be > transformed during the prepass." > | EFun'(_,free_vars,i,body,annot) -> efun (free_vars,i,body,annot) > | ERecursiveFun'(_,free_vars,i,body,annot) -> efun > (free_vars,i,body.Value,annot) > | EForall _ -> failwith "Compiler error: Raw foralls should be > transformed during the prepass." > | EForall'(_,free_vars,i,body) -> eforall (free_vars,i,body) > | ERecursiveForall'(_,free_vars,i,body) -> eforall > (free_vars,i,body.Value) > | ERecursive a -> term s a.Value > | ERecBlock _ -> failwith "Compiler error: Recursive blocks should be > inlined and eliminated during the prepass." > | EJoinPoint _ -> failwith "Compiler error: Raw join points should be > transformed during the prepass." > | EJoinPoint'(r,scope,body,annot,backend,jp_name) -> > let env_global_type = Array.map (vt s) scope.ty.free_vars > let env_global_term = Array.map (v s) scope.term.free_vars > > let backend' = match backend with None -> s.backend | Some > (_,backend) -> backend_strings.Add backend > let dict, hc_table = memoize join_point_method (fun _ -> > Dictionary(HashIdentity.Structural), HashConsTable()) (backend', body) > let call_args, env_global_value = data_to_rdata s hc_table > env_global_term > let join_point_key = hc_table.Add(env_global_value, env_global_type) > > let ret_ty = > match dict.TryGetValue(join_point_key) with > | true, (_, Some ret_ty, _) -> ret_ty > | true, (_, None, _) -> raise_type_error (add_trace s r) > "Recursive join points must be annotated." > | false, _ -> > let s : LangEnv = { > trace = r :: s.trace > seq = ResizeArray() > cse = [[Dictionary(HashIdentity.Structural)]] > unions = Map.empty > i = ref 0 > env_global_type = env_global_type > env_global_term = env_global_term > env_stack_type = Array.zeroCreate<_> scope.ty.stack_size > env_stack_term = Array.zeroCreate<_> > scope.term.stack_size > backend = backend' > globals = s.globals > } > let s = rename_global_term s > let annot = Option.map (ty s) annot > dict.[[join_point_key]] <- (None, annot, jp_name) > let seq,ty = term_scope'' s body annot > dict.[[join_point_key]] <- (Some seq, Some ty, jp_name) > annot |> Option.iter (fun annot -> if annot <> ty then > raise_type_error s <| sprintf "The annotation of the join point does not match > its body's type.Got: %s\nExpected: %s" (show_ty ty) (show_ty annot)) > ty > > match backend with > | None -> push_typedop_no_rewrite s > (TyJoinPoint(JPMethod((backend',body),join_point_key),call_args)) ret_ty > | Some (range,_) -> > let method_name = push_typedop_no_rewrite s > (TyBackend((backend',body),join_point_key,range)) (YPrim Int32T) > let call_args = Array.foldBack (fun v s -> DPair(DV v,s)) > call_args DB > DPair(method_name, call_args) > | EDefaultLit(r,a,b) -> let s = add_trace s r in default_lit s a (ty s > b) |> DLit > | EType(r,_) -> raise_type_error (add_trace s r) "Raw types are not > allowed on the term level." > | EApply(r,a,b) -> let s = add_trace s r in apply s (term s a, term s b) > | ETypeApply(r,a,b) -> > let s = add_trace s r > type_apply s (term s a) (ty s b) > | ERecordWith(r,vars,withs,withouts) -> > let s = add_trace s r > let map x = > let fold f a b = List.fold f b a > let var r a = > match term s a with > | DSymbol a -> a > | a -> raise_type_error (add_trace s r) <| sprintf "Expected > a symbol.\nGot: %s" (show_data a) > x |> fold (fun m x -> > let sym a b = > let i = > m > |> Map.tryPick (fun (i, k) _v -> if k = a then Some > i else None) > |> Option.defaultValue m.Count > Map.add (i, a) (term s b) m > let sym_mod r a b = > match m |> Map.tryPick (fun (i, k) v -> if k = a then > Some (i, v) else None) with > | Some (i, a') -> Map.add (i, a) (apply s (term s b, > a')) m > | None -> raise_type_error (add_trace s r) "Cannot find > key %s in record." a > match x with > | RSymbol((_,a),b) -> sym a b > | RSymbolModify((r,a),b) -> sym_mod r a b > | RVar((r,a),b) -> sym (var r a) b > | RVarModify((r,a),b) -> sym_mod r (var r a) b > ) withs > |> fold (fun m -> function > | WSymbol(r,a) -> > m |> Map.filter (fun (_, k) _ -> k <> a) > | WVar(r,a) -> > m |> Map.filter (fun (_, k) _ -> k <> var r a) > ) withouts > > let rec dive m = function > | (r,x) :: xs -> > let s = add_trace s r > match term s x with > | DSymbol b -> > let v = > m |> Map.tryPick (fun (i, k) v -> if k = b then Some > (i, v) else None) > match v with > | Some (i, DRecord a) -> Map.add (i, b) (DRecord (dive a > xs)) m > | Some a -> raise_type_error s <| sprintf "Expected a > record as the result of indexing.\nGot: %s" (show_data (a |> snd)) > // match Map.tryFind b m with > // | Some (DRecord a) -> Map.add b (DRecord (dive a xs)) > m > // | Some a -> raise_type_error s <| sprintf "Expected a > record as the result of indexing.\nGot: %s" (show_data a) > | None -> raise_type_error s <| sprintf "Cannot find the > key %s in a record." b > | b -> raise_type_error s <| sprintf "Expected a > symbol.\nGot: %s" (show_data b) > | [[]] -> m |> map > > match vars with > | (r,x) :: xs -> > match term s x with > | DRecord l -> dive l xs > | a -> raise_type_error s <| sprintf "Expected a record.\nGot: > %s" (show_data a) > | [[]] -> map Map.empty > |> DRecord > | EPatternMemo _ | EReal _ -> failwith "Compiler error: Should have been > eliminated during the prepass." > | EModule a -> DRecord(a |> Seq.map (fun (KeyValue (k, v)) -> (a.Count, > k), (v |> term s)) |> Map.ofSeq) > | EPair(r,a,b) -> DPair(term s a, term s b) > | ESeq(r,a,b) -> > let s = add_trace s r > match term s a with > | DB -> term s b > | a -> raise_type_error s <| sprintf "Expected unit.\nGot: %s" > (show_data a) > | EAnnot(r,a,b) -> > let s = add_trace s r > let a = term s a > let a_ty = data_to_ty s a > let b = ty s b > if a_ty <> b then raise_type_error s <| sprintf "The body does not > match the annotation.\nGot: %s\nExpected: %s" (show_ty a_ty) (show_ty b) > a > | EExists(r,a,b) -> > let s = add_trace s r > let a = List.map (ty s) a |> List.toArray > let b = term s b > DExists(a,b) > | EPatternMiss a -> raise_type_error s <| sprintf "Pattern miss.\nGot: > %s" (show_data (term s a)) > | ETypePatternMiss a -> raise_type_error s <| sprintf "Pattern > miss.\nGot: %s" (show_ty (ty s a)) > | EIfThenElse(r,cond,tr,fl) -> let s = add_trace s r in if_ s (term s > cond) tr fl > | EIfThen(r,cond,tr) -> let s = add_trace s r in if_ s (term s cond) tr > (EB r) > | EMutableSet(r,a,b,c) -> > let s = add_trace s r > let a,a_layout_ty = > match term s a with > | DV(L(i,YLayout(a_layout_ty,(StackMutable | HeapMutable))) & a) > -> a,a_layout_ty > | DV(L(_,YLayout _)) -> raise_type_error s "Expected a mutable > layout type, but got an immutable one." > | a -> raise_type_error s <| sprintf "Expected a mutable layout > type.\nGot: %s" (show_data a) > let b = > List.map (fun (r,b) -> > match term s b with > | DSymbol b -> r,b > | b -> raise_type_error (add_trace s r) <| sprintf "Expected > a symbol.\nGot: %s" (show_data b) > ) b > let c_ty = > List.fold (fun (r,a) (r',b) -> > match a with > | YRecord a -> > match a |> Map.tryPick (fun (_, k) v -> if k = b then > Some v else None) with > | Some a -> r', a > | None -> raise_type_error (add_trace s r) <| sprintf > "Key %s not found in the layout type." b > | a -> raise_type_error (add_trace s r) <| sprintf "Expected > a record.\nGot: %s" (show_ty a) > ) (r,a_layout_ty) b |> snd > let c = term s c |> dyn false s > let c = > match c with > | DRecord c -> > c > |> Seq.map (fun (KeyValue ((i, k), v)) -> > let i = > match c_ty with > | YRecord a -> > a |> Map.tryPick (fun (i', k') _ -> if k = k' > then Some i' else None) > | _ -> None > |> Option.defaultValue i > (i, k), v > ) > |> Map.ofSeq > |> DRecord > | _ -> c > let c_ty' = data_to_ty s c > if c_ty' = c_ty then push_typedop_no_rewrite s > (TyLayoutMutableSet(a,List.map snd b,c)) YB > else raise_type_error s <| sprintf "The two side do not have the > same type.\nGot: %s\nExpected: %s" (show_ty c_ty') (show_ty c_ty) > | EMacro(r,a,b) -> > let s = add_trace s r > let a = a |> List.map (function MText x -> CMText x | MTerm x -> > CMTerm(term s x |> dyn false s) | MType x -> CMType(ty s x) | MLitType x -> > CMTypeLit(ty s x |> assert_ty_lit s)) > push_typedop_no_rewrite s (TyMacro(a)) (ty s b) > | EPrototypeApply(_,prot_id,b) -> > let rec loop = function > | YNominal b -> > match > env.prototypes_instances.TryGetValue((prot_id,b.node.id)) with > | true,x -> term s x > | _ -> raise_type_error s "An instance of the prototype > being applied could be found in the dictionary." > | YApply(a,b) -> type_apply s (loop a) b > | b -> raise_type_error s <| sprintf "Expected a nominal or a > deferred type apply.\nGot: %s" (show_ty b) > loop (ty s b) > | EOp(r,NominalCreate,[[a;EType(_,b)]]) | ENominal(r,a,b) -> enominal > (r,a,b) > | EUnbox(r,k,id,a,on_succ,on_fail) -> > let s = add_trace s r > let run s a = store_term s id a; term s on_succ > match term s a with > | DNominal(DUnion(DPair(DSymbol k',a),_),_) -> if k = k' then run s > a else term s on_fail > | DNominal(DV(L(_,YUnion h) & i),_) -> > let body blk = > match Map.tryPick (fun (_, name') v -> if k = name' then > Some v else None) h.Item.cases with > | Some v when Set.contains k blk = false -> > let on_succ, ret_ty = > let a = ty_to_data s v > let s = {s with unions = Map.add i (UnionData (k,a)) > s.unions; cse = Dictionary(HashIdentity.Structural) :: s.cse; seq = > ResizeArray()} > let x = run s a |> dyn false s > Map.add k ([[a]], (seq_apply s x)) Map.empty, > data_to_ty s x > let on_succ,on_fails = > let blk = Set.add k blk > if blk.Count = h.Item.cases.Count then on_succ, None > // Have to do this otherwise it would have hit EPatternMiss > else > let on_fails, ret_ty' = term_scope {s with > unions = Map.add i (UnionBlockers blk) s.unions} on_fail > if ret_ty <> ret_ty' then raise_type_error s > $"The types of two branches of an union unbox do not match.\nGot: {show_ty > ret_ty}\nAnd: {show_ty ret_ty'}" > match on_fails with > | > [[|TyLocalReturnOp(_,TyUnionUnbox([[i']],_,on_succ',on_fail'),_)|]] when i = i' > -> Map.foldBack Map.add on_succ' on_succ , on_fail' > | _ -> on_succ, Some on_fails > push_typedop_no_rewrite s > (TyUnionUnbox([[i]],h,on_succ,on_fails)) ret_ty > | _ -> term s on_fail > match Map.tryFind i s.unions with > | Some (UnionData (k',a)) -> if k = k' then run s a else term s > on_fail > | Some (UnionBlockers blk) -> body blk > | None -> body Set.empty > | _ -> term s on_fail > | EOp(r,Unbox,[[a;on_succ]]) -> > let s = add_trace s r > let on_succ = term s on_succ > let run s a = apply s (on_succ,a) > match term s a with > | DNominal(DUnion(a,_),_) -> run s a > | DNominal(DV(L(_,YUnion h) & i) & a,_) -> > let body blk = > let cases, case_ty = > Map.fold (fun (m, case_ty) (_, k) v -> > if Set.contains k blk = false then > let a = ty_to_data s v > let s = {s with unions = Map.add i (UnionData > (k,a)) s.unions; cse = Dictionary(HashIdentity.Structural) :: s.cse; seq = > ResizeArray()} > let x = run s (DPair(DSymbol k, a)) |> dyn false > s > let x_ty' = data_to_ty s x > let case_ty = > match case_ty with > | Some x_ty when x_ty' <> x_ty -> > raise_type_error s <| sprintf "One union case for key %s has a different return > that the previous one.\nGot: %s\nExpected: %s" k (show_ty x_ty') (show_ty x_ty) > | Some _ -> case_ty > | None -> Some x_ty' > Map.add k ([[a]], seq_apply s x) m, case_ty > else > m, case_ty > ) (Map.empty,None) h.Item.cases > push_typedop_no_rewrite s (TyUnionUnbox([[i]],h,cases,None)) > (Option.get case_ty) > match Map.tryFind i s.unions with > | Some (UnionData (k,a)) -> run s (DPair(DSymbol k, a)) > | Some (UnionBlockers blk) -> body blk > | None -> body Set.empty > | a -> raise_type_error s <| sprintf "Expected an union type.\nGot: > %s" (show_data a) > | EOp(r,Unbox2,[[a;b;on_succ;on_fail]]) -> > let s = add_trace s r > let on_succ = term s on_succ > let on_fail = term s on_fail > let mutable case_ty = None > let s' () = {s with cse = Dictionary(HashIdentity.Structural) :: > s.cse; seq = ResizeArray()} > let assert_case_ty s x = > let x_ty' = data_to_ty s x > match case_ty with > | Some x_ty -> if x_ty' <> x_ty then raise_type_error s <| > sprintf "One union case has a different return than the previous one.\nGot: > %s\nExpected: %s" (show_ty x_ty') (show_ty x_ty) > | None -> case_ty <- Some x_ty' > let run s x = > let x = apply s x |> dyn false s > assert_case_ty s x > seq_apply s x > let case_on_fail () = run (s'()) (on_fail, DB) > let key_value = function > | DPair(DSymbol k, a) -> k, a > | _ -> failwith "Compiler error: Malformed union." > match term s a, term s b with > | DNominal(DUnion(_,h),_), DNominal(DUnion(_,h'),_) when h <> h' -> > raise_type_error s <| sprintf "The two variables have different > union types.\nGot: %s\nGot: %s" (show_ty (YUnion h)) (show_ty (YUnion h')) > | DNominal(DUnion(a,_),_), DNominal(DUnion(a',_),_) -> > let k,a = key_value a > let k',a' = key_value a' > if k = k' then apply s (on_succ, DPair(DSymbol k, DPair(a, a'))) > else apply s (on_fail, DB) > | DNominal(DV(L(_,YUnion h)),_), DNominal(DUnion(_,h'),_) | > DNominal(DUnion(_,h),_), DNominal(DV(L(_,YUnion h')),_) when h <> h' -> > raise_type_error s <| sprintf "The two variables have different > union types.\nGot: %s\nGot: %s" (show_ty (YUnion h)) (show_ty (YUnion h')) > | DNominal(DV(L(_,YUnion h) & i),_), DNominal(DUnion(a',_),_) -> > let k,a' = key_value a' > let v = h.Item.cases |> Map.pick (fun (_, name') v -> if k = > name' then Some v else None) > let case_on_succ = > let s = s'() > let a = ty_to_data s v > let s = {s with unions = Map.add i (UnionData (k,a)) > s.unions} > [[a]], run s (on_succ, DPair(DSymbol k, DPair(a, a'))) > push_typedop_no_rewrite s (TyUnionUnbox([[i]],h,Map.add k > case_on_succ Map.empty,Some (case_on_fail()))) (Option.get case_ty) > | DNominal(DUnion(a,_),_), DNominal(DV(L(_,YUnion h) & i'),_) -> > let k,a = key_value a > let v = h.Item.cases |> Map.pick (fun (_, name') v -> if k = > name' then Some v else None) > let case_on_succ = > let s = s'() > let a' = ty_to_data s v > let s = {s with unions = Map.add i' (UnionData (k,a')) > s.unions} > [[a']], run s (on_succ, DPair(DSymbol k, DPair(a, a'))) > push_typedop_no_rewrite s (TyUnionUnbox([[i']],h,Map.add k > case_on_succ Map.empty,Some (case_on_fail()))) (Option.get case_ty) > | DNominal(DV(L(_,YUnion h & t)),_), DNominal(DV(L(_,YUnion h' & > t')),_) when h <> h' -> > raise_type_error s <| sprintf "The two variables have different > union types.\nGot: %s\nGot: %s" (show_ty t) (show_ty t') > | DNominal(DV(L(_,YUnion h) & i),_), DNominal(DV(L(_,YUnion _) & > i'),_) -> > let cases_on_succ = > Map.map (fun (_, k) v -> > let s = s'() > let a,a' = ty_to_data s v, ty_to_data s v > let s = {s with unions = > let u = s.unions > let u = Map.add i (UnionData (k,a)) > u > Map.add i' (UnionData (k,a')) u > } > [[a;a']], run s (on_succ, DPair(DSymbol k, DPair(a, > a'))) > ) h.Item.cases > |> Seq.map (fun (KeyValue ((_, k), v)) -> k, v) > |> Map.ofSeq > push_typedop_no_rewrite s > (TyUnionUnbox([[i;i']],h,cases_on_succ,Some (case_on_fail()))) (Option.get > case_ty) > | a,a' -> raise_type_error s <| sprintf "Expected two union > types.\nGot: %s\nAnd: %s" (show_data a) (show_data a') > | EOp(r,UnionUntag,[[EType(_,t);a;on_succ;on_fail]]) -> > let t = ty s t > match nominal_type_apply s t with > | YUnion h -> > let h = h.Item > let on_succ, on_fail = term s on_succ, term s on_fail > let lit i = > if 0 <= i && i < h.tag_cases.Length then > let k,v = h.tag_cases.[[i]] > type_apply s (apply s (on_succ, DSymbol k)) v > else raise_type_error s $"Invalid tag 0 <= {i} < > {h.tag_cases.Length} in UnionUntag." > match term s a with > | DV(L(i,YPrim Int32T) as tyv) as a -> > let key = TyOp(UnionUntag,[[a]]) > match cse_tryfind s key with > | Some(DLit(LitInt32 i)) -> lit i > | Some _ -> failwith "Compiler error: Expected an 32-bit > int." > | None -> > let on_fail, on_fail_ty = > let s = {s with cse = > Dictionary(HashIdentity.Structural) :: s.cse; seq = ResizeArray()} > let r = apply s (on_fail, DB) |> dyn false s > seq_apply s r, data_to_ty s r > let on_succ = > Array.mapi (fun i (k,v) -> > let cse = Dictionary(HashIdentity.Structural) > cse.Add(key,DLit(LitInt32 i)) > let s = {s with cse = cse :: s.cse; seq = > ResizeArray()} > let r = type_apply s (apply s (on_succ, DSymbol > k)) v |> dyn false s > let r_ty = data_to_ty s r > if on_fail_ty <> r_ty then raise_type_error s <| > sprintf "Return type of the success case does not match the failure one.\nGot: > %s\nExpected: %s" (show_ty r_ty) (show_ty on_fail_ty) > seq_apply s r > ) h.tag_cases > push_typedop_no_rewrite s > (TyIntSwitch(tyv,on_succ,on_fail)) on_fail_ty > | DLit(LitInt32 i) -> lit i > | a -> raise_type_error s <| sprintf "Expected an i32.\nGot: %s" > (show_data a) > | _ -> raise_type_error s <| sprintf "Expected an union type.\nGot: > %s" (show_ty t) > | ELet(r,i,a,b) -> let s = add_trace s r in store_term s i (term s a); > term s b > | EPairTest(r,bind,p1,p2,on_succ,on_fail) -> > let s = add_trace s r > match v s bind with > | DPair(a,b) -> store_term s p1 a; store_term s p2 b; term s on_succ > | _ -> term s on_fail > | EExistsTest(r,bind,pat_type,pat,on_succ,on_fail) -> > let s = add_trace s r > match v s bind with > | DExists(a,b) -> Array.iter2 (store_ty s) pat_type a; store_term s > pat b; term s on_succ > | DV(L(_,YExists)) -> raise_type_error s "Runtime existentials > cannot be destructured. They are a compile time feature only." > | _ -> term s on_fail > | ESymbolTest(r,a,bind,on_succ,on_fail) -> > let s = add_trace s r > match v s bind with > | DSymbol a' when a = a' -> term s on_succ > | _ -> term s on_fail > | ERecordTest(r,a,bind,on_succ,on_fail) -> > let s = add_trace s r > match v s bind with > | DRecord l -> > let rec loop = function > | x :: x' -> > let sym a b = > match l |> Map.tryPick (fun (_, k) v -> if k = a > then Some v else None) with > | Some a -> store_term s b a; loop x' > | None -> term s on_fail > match x with > | Symbol((_,a),b) -> sym a b > | Var((r,a),b) -> > match term s a with > | DSymbol a -> sym a b > | a -> raise_type_error (add_trace s r) <| sprintf > "Expected a symbol.\nGot: %s" (show_data a) > | [[]] -> term s on_succ > loop a > | _ -> term s on_fail > | EAnnotTest(r,a,bind,on_succ,on_fail) -> let s = add_trace s r in if > data_to_ty s (v s bind) = ty s a then term s on_succ else term s on_fail > | EUnitTest(r,bind,on_succ,on_fail) -> let s = add_trace s r in match v > s bind with DB -> term s on_succ | _ -> term s on_fail > | ENominalTest(r,a,bind,p1,on_succ,on_fail) -> > let s = add_trace s r > match ty s a with > | YNominal a -> > match v s bind with > | DNominal((DUnion _ | DV(L(_,YUnion _))),_) -> raise_type_error > s "Got an union in a nominal pattern." > | DNominal(v,b) -> > let rec loop = function > | YNominal b -> if a = b then store_term s p1 v; term s > on_succ else term s on_fail > | YApply(a,_) -> loop a > | _ -> raise_type_error s <| sprintf "Compiler error: > Expected a deferred type apply or a nominal.\nGot: %s" (show_ty b) > loop b > | _ -> term s on_fail > | a -> raise_type_error s <| sprintf "Expected a nominal on the left > side of the pattern.\nGot: %s" (show_ty a) > | ELitTest(r,a,bind,on_succ,on_fail) -> let s = add_trace s r in > lit_test s a bind on_succ on_fail > | EDefaultLitTest(r,a,b,bind,on_succ,on_fail) -> let s = add_trace s r > in lit_test s (default_lit s a (ty s b)) bind on_succ on_fail > | ETypecase(r,a,b) -> > let s = add_trace s r > let a = ty s a > let rec loop = function > | (a',b) :: rest -> if is_unify s (a,ty s a') then Some(term s > b) else loop rest > | [[]] -> None > match loop b with > | Some r -> r > | None -> raise_type_error s <| sprintf "Typecase miss.\nGot: %s" > (show_ty a) > | EOp(_,ToFunPtr,[[a]]) -> > match term s a with > | DFunction(body,Some(TFun(domain,range,_)),a,b,c,d) -> > DFunction(body,Some(TFun(domain,range,FT_Pointer)),a,b,c,d) > | DV(L(_,YFun _)) -> raise_type_error s <| sprintf "Cannot convert a > runtime function to a closure. The closure conversion should be done on a > compile time funciton." > | a -> raise_type_error s <| sprintf "Expected a function.\nGot: %s" > (show_data a) > | EOp(_,ToFunClosure,[[a]]) -> > match term s a with > | DFunction(body,Some(TFun(domain,range,_)),a,b,c,d) -> > DFunction(body,Some(TFun(domain,range,FT_Closure)),a,b,c,d) > | DV(L(_,YFun _)) -> raise_type_error s <| sprintf "Cannot convert a > runtime function to a function pointer. The pointer conversion should be done on > a compile time funciton." > | a -> raise_type_error s <| sprintf "Expected a function.\nGot: %s" > (show_data a) > | EOp(_,PragmaUnrollPush,[[a]]) -> > match term s a with > | DLit (LitInt32 _) as x -> push_op_no_rewrite s PragmaUnrollPush x > YB > | a -> raise_type_error s <| sprintf "Expected an i32 literal.\nGot: > %s" (show_data a) > | EOp(_,PragmaUnrollPop,[[]]) -> > push_op_no_rewrite' s PragmaUnrollPop [[]] YB > | EOp(_,BackendSwitch,l) -> > let mutable t = None > let mutable d = None > let validate_type t' = > match t with > | Some t -> if t <> t' then raise_type_error s $"The backend > switch needs to have the same type for all of its branches.\nGot: {show_ty > t'}\nExpected: {show_ty t}" > | None -> t <- Some t' > l |> List.iter (function > | EPair(_,ELit(_,LitString backend),b) -> > // The reason why we're evaling all the branches intead of > just one and in this specific order is because otherwise > // compile time hashmaps could make type inference unsound. > if backend = s.backend.node then > let d' = term s b > validate_type (data_to_ty s d') > d <- Some d' > else > let _,t' = term_scope s b > validate_type t' > | _ -> raise_type_error s "BackendSwitch should be a list of > (string literal,body) pairs." > ) > match d with > | Some cur -> cur |> dyn true s > | None -> raise_type_error s $"Cannot find the backend > {s.backend.node} in the backend switch op." > | EOp(_,UsesOriginalTermVars,[[a;b]]) -> > let a = term s a |> data_term_vars' > let b = term s b |> data_term_vars' > let c = a.Length = b.Length && > HashSet(a,HashIdentity.Reference).SetEquals(b) > DLit(LitBool c) > | EOp(_,UsesOriginalNominals,[[a;b]]) -> > let a = term s a |> data_nominals > let b = term s b |> data_nominals > let c = a.Length = b.Length && > HashSet(a,HashIdentity.Reference).SetEquals(b) > DLit(LitBool c) > | EOp(_,While,[[cond;body]]) -> > match term_scope s cond with > | [[|TyLocalReturnOp(_,TyJoinPoint cond,_)|]], ty -> > match ty with > | YPrim BoolT -> > match term_scope s body with > | body, YB & ty -> push_typedop s (TyWhile(cond,body)) ty > | _, ty -> raise_type_error s <| sprintf "The body of the > while loop must be of type unit.\nGot: %s" (show_ty ty) > | _ -> raise_type_error s <| sprintf "The conditional of the > while loop must be of type bool.\nGot: %s" (show_ty ty) > | _ -> raise_type_error s "The body of the conditional of the while > loop must be a solitary join point." > | EOp(_,Do,[[body]]) -> > match term_scope s body with > | body, YB & ty -> push_typedop s (TyDo body) ty > | _, ty -> raise_type_error s <| sprintf "The body of the do binding > must be of type unit.\nGot: %s" (show_ty ty) > | EOp(_,Indent,[[body]]) -> > let body, ty = term_scope s body > push_typedop s (TyIndent body) ty > | EOp(_,(LayoutToHeap | LayoutToHeapMutable | LayoutToStackMutable as > op),[[a]]) -> > let x = dyn false s (term s a) > let ty = data_to_ty s x > let layout = > match op with > | LayoutToHeap -> Heap > | LayoutToHeapMutable -> HeapMutable > | LayoutToStackMutable -> StackMutable > | _ -> raise_type_error s "Compiler error: Forgot a case in > LayoutTo." > let ret_ty = YLayout(ty,layout) > let key = TyToLayout(x,ret_ty) > push_typedop_no_rewrite s key ret_ty > | EOp(_,LayoutIndex,[[a]]) -> > match term s a with > | DV(L(i,YLayout(ty,layout)) as tyv) as a -> > match layout with > | StackMutable | HeapMutable -> push_typedop_no_rewrite s > (TyLayoutIndexAll tyv) ty > | Heap -> > match ty with > | YRecord l -> DRecord(Map.map (fun (_,b) ty -> push_typedop > s (TyLayoutIndexByKey(tyv,b)) ty) l) > | _ -> push_typedop s (TyLayoutIndexAll tyv) ty > | a -> raise_type_error s <| sprintf "Expected a layout type.\nGot: > %s" (show_data a) > | EOp(_,TypeToVar,[[EType(_,a)]]) -> push_typedop_no_rewrite s > (TyOp(TypeToVar,[[]])) (ty s a) > | EOp(_,LitToTypeLit,[[a]]) -> > match term s a with > | DLit x -> DTLit x > | DSymbol x -> DSymbol x > | a -> raise_type_error s <| sprintf "Expected a symbol or a type > literal.\nGot: %s" (show_data a) > | EOp(_,LitToSymbol,[[a]]) -> > match term s a with > | DLit x -> > match x with > | LitInt8 a -> a.ToString("R") |> DSymbol > | LitInt16 a -> a.ToString("R") |> DSymbol > | LitInt32 a -> a.ToString("R") |> DSymbol > | LitInt64 a -> a.ToString("R") |> DSymbol > | LitUInt8 a -> a.ToString("R") |> DSymbol > | LitUInt16 a -> a.ToString("R") |> DSymbol > | LitUInt32 a -> a.ToString("R") |> DSymbol > | LitUInt64 a -> a.ToString("R") |> DSymbol > | LitFloat32 a -> a.ToString("R") |> DSymbol > | LitFloat64 a -> a.ToString("R") |> DSymbol > | LitBool a -> a.ToString() |> DSymbol > | LitChar a -> a.ToString() |> DSymbol > | LitString a -> a.ToString() |> DSymbol > | a -> raise_type_error s <| sprintf "Expected a symbol or a type > literal.\nGot: %s" (show_data a) > | EOp(_,StringLitToSymbol,[[a]]) -> > match term s a with > | DLit(LitString a) -> DSymbol a > | a -> raise_type_error s <| sprintf "Expected a string > literal.\nGot: %s" (show_data a) > | EOp(_,SymbolToString,[[a]]) -> > match term s a with > | DSymbol a -> DLit (LitString a) > | a -> raise_type_error s <| sprintf "Expected a symbol.\nGot: %s" > (show_data a) > | EOp(_,TypeToSymbol,[[EType(_,a)]]) -> > match ty s a with > | YSymbol a -> DSymbol a > | a -> raise_type_error s <| sprintf "Expected a symbol.\nGot: %s" > (show_ty a) > | EOp(_,TypeLitToLit,[[EType(_,a)]]) -> > let rec loop = function > | YLit a -> DLit a > | YSymbol a -> DSymbol a > | YNominal _ | YApply _ as a -> loop (nominal_type_apply s a) > | a -> raise_type_error s <| sprintf "Expected a type literal or > a symbol.\nGot: %s" (show_ty a) > loop (ty s a) > | EOp(_,(TypeToVar | TypeToSymbol),[[a]]) -> raise_type_error s > "Expected a type." > | EOp(_,Dyn,[[a]]) -> term s a |> dyn true s > | EOp(_,StringLength,[[EType(_,t);a]]) -> > let t = ty s t > if is_any_int t = false then raise_type_error s <| sprintf "Expected > an int.\nGot: %s" (show_ty t) > match term s a with > | DLit(LitString str) -> > match t with > | YPrim Int8T -> try DLit (LitInt8 (System.Convert.ToSByte > str.Length)) with :? System.OverflowException -> raise_type_error s <| sprintf > "Literal conversion to i8 failed as the string length is either too large.\nGot: > %i" str.Length > | YPrim Int16T -> try DLit (LitInt16 (System.Convert.ToInt16 > str.Length)) with :? System.OverflowException -> raise_type_error s <| sprintf > "Literal conversion to i16 failed as the string length is either too > large.\nGot: %i" str.Length > | YPrim Int32T -> try DLit (LitInt32 (System.Convert.ToInt32 > str.Length)) with :? System.OverflowException -> raise_type_error s <| sprintf > "Literal conversion to i32 failed as the string length is either too > large.\nGot: %i" str.Length > | YPrim Int64T -> try DLit (LitInt64 (System.Convert.ToInt64 > str.Length)) with :? System.OverflowException -> raise_type_error s <| sprintf > "Literal conversion to i64 failed as the string length is either too > large.\nGot: %i" str.Length > | YPrim UInt8T -> try DLit (LitUInt8 (System.Convert.ToByte > str.Length)) with :? System.OverflowException -> raise_type_error s <| sprintf > "Literal conversion to u8 failed as the string length is either too large.\nGot: > %i" str.Length > | YPrim UInt16T -> try DLit (LitUInt16 (System.Convert.ToUInt16 > str.Length)) with :? System.OverflowException -> raise_type_error s <| sprintf > "Literal conversion to u16 failed as the string length is either too > large.\nGot: %i" str.Length > | YPrim UInt32T -> try DLit (LitUInt32 (System.Convert.ToUInt32 > str.Length)) with :? System.OverflowException -> raise_type_error s <| sprintf > "Literal conversion to u32 failed as the string length is either too > large.\nGot: %i" str.Length > | YPrim UInt64T -> try DLit (LitUInt64 (System.Convert.ToUInt64 > str.Length)) with :? System.OverflowException -> raise_type_error s <| sprintf > "Literal conversion to u64 failed as the string length is either too > large.\nGot: %i" str.Length > | _ -> failwith "impossible" > | DV(L(_,YPrim StringT)) & str -> push_typedop s > (TyStringLength(t,str)) t > | x -> raise_type_error s <| sprintf "Expected a string.\nGot: %s" > (show_data x) > | EOp(_,StringIndex,[[a;b]]) -> > match term2 s a b with > | DLit(LitString a), DLit b -> > let b = to_i32 b > if 0 <= b && b < a.Length then a.[[int b]] |> LitChar |> DLit > else raise_type_error s <| sprintf "Cannot index into a string > of length %i at index %i." a.Length b > | a,b -> > match data_to_ty s a, data_to_ty s b with > | YPrim StringT,bt when is_any_int bt -> push_binop s > StringIndex (a,b) (YPrim CharT) > | a,b -> raise_type_error s <| sprintf "Expected a string and an > int as arguments.\nGot: %s\nAnd: %s" (show_ty a) (show_ty b) > | EOp(_,StringSlice,[[a;b;c]]) -> > match term3 s a b c with > | DLit(LitString a), DLit b, DLit c -> > let b,c = to_i32 b, to_i32 c > if 0 <= b && b <= c && c < a.Length then a.[[int b..int c]] |> > LitString |> DLit > else raise_type_error s <| sprintf "String of length %i's slice > from %i to %i is invalid." a.Length b c > | a,b,c -> > match data_to_ty s a, data_to_ty s b, data_to_ty s c with > | YPrim StringT, bt, ct when is_any_int bt && is_any_int ct -> > push_triop s StringSlice (a,b,c) (YPrim StringT) > | a,b,c -> raise_type_error s <| sprintf "Expected a string and > two ints as arguments.\nGot: %s\nAnd: %s\nAnd: %s" (show_ty a) (show_ty b) > (show_ty c) > | EArray(_,a,b) -> > match ty s b with > | YArray el as b -> > let a = > List.map (fun x -> > let x = term s x |> dyn false s > let x_ty = data_to_ty s x > if x_ty = el then x > else raise_type_error s $"All the elements in the array > literal have to be the type {show_ty el}.\nGot: {show_ty x_ty}" > ) a > push_typedop_no_rewrite s (TyArrayLiteral(el,a)) b > | b -> raise_type_error s $"Expected an array_base.\nGot: {show_ty > b}" > | EOp(_,ArrayCreate,[[EType(_,a);b]]) -> > let a,b = ty s a, term s b > match data_to_ty s b with > | bt when is_any_int bt -> push_typedop_no_rewrite s > (TyArrayCreate(a,b)) (YArray a) > | b -> raise_type_error s <| sprintf "Expected an int as the size of > the array.\nGot: %s" (show_ty b) > | EOp(_,ArrayLength,[[EType(_,t);a]]) -> > let t = ty s t > if is_any_int t = false then raise_type_error s <| sprintf "Expected > an int.\nGot: %s" (show_ty t) > let a = term s a > match data_to_ty s a with > | YArray _ -> push_typedop s (TyArrayLength(t,a)) t > | a -> raise_type_error s <| sprintf "Expected an array_base.\nGot: > %s" (show_ty a) > | EOp(_,ArrayIndex,[[a;b]]) -> > match term s a with > | DV(L(_,YArray ty)) & a -> > let b = term s b > match data_to_ty s b with > | bt when is_any_int bt -> push_binop_no_rewrite s ArrayIndex > (a,b) ty > | b -> raise_type_error s <| sprintf "Expected an int as the > index argumet.\nGot: %s" (show_ty b) > | a -> raise_type_error s <| sprintf "Expected an array_base.\nGot: > %s" (show_data a) > | EOp(_,ArrayIndexSet,[[a;b;c]]) -> > match term s a with > | DV(L(_,YArray ty)) & a -> > let b = term s b > match data_to_ty s b with > | bt when is_any_int bt -> > let c = term s c |> dyn false s > let ty' = data_to_ty s c > if ty' = ty then push_triop_no_rewrite s ArrayIndexSet > (a,b,c) YB > else raise_type_error s <| sprintf "The array and the value > being set do not have the same type.\nGot: %s\nExpected: %s" (show_ty ty') > (show_ty ty) > | b -> raise_type_error s <| sprintf "Expected an int as the > index argumet.\nGot: %s" (show_ty b) > | a -> raise_type_error s <| sprintf "Expected an array_base.\nGot: > %s" (show_data a) > | EOp(_,RecordMap,[[a;b]]) -> > match term2 s a b with > | a, DRecord l -> Map.map (fun (_i, k) v -> apply s (a, record2 > ((l.Count, "key"), DSymbol k) (((l.Count + 1), "value"), v))) l |> DRecord > | _, b -> raise_type_error s <| sprintf "Expected a record.\nGot: > %s" (show_data b) > | EOp(_,RecordIter,[[a;b]]) -> > match term2 s a b with > | a, DRecord l -> > Map.iter (fun (i,k) v -> > match apply s (a, record2 ((l.Count, "key"), DSymbol k) > (((l.Count + 1), "value"), v)) with > | DB -> () > | x -> raise_type_error s <| sprintf "Expected an unit > value.\nGot: %s" (show_data x) > ) l > DB > | _, b -> raise_type_error s <| sprintf "Expected a record.\nGot: > %s" (show_data b) > | EOp(_,RecordFilter,[[a;b]]) -> > match term2 s a b with > | a, DRecord l -> > Map.filter (fun (_i,k) v -> > match apply s (a, record2 ((l.Count, "key"), DSymbol k) > (((l.Count + 1), "value"), v)) with > | DLit(LitBool x) -> x > | x -> raise_type_error s <| sprintf "Expected a bool > literal.\nGot: %s" (show_data x) > ) l > |> DRecord > | _, b -> raise_type_error s <| sprintf "Expected a record.\nGot: > %s" (show_data b) > | EOp(_,RecordFold,[[a;b;c]]) -> > match term3 s a b c with > | a, state, DRecord l -> Map.fold (fun state (i,k) v -> apply s (a, > record3 ((l.Count, "state"), state) (((l.Count + 1), "key"), DSymbol k) > (((l.Count + 2), "value"), v))) state l > | _, _, r -> raise_type_error s <| sprintf "Expected a record.\nGot: > %s" (show_data r) > | EOp(_,RecordFoldBack,[[a;b;c]]) -> > match term3 s a b c with > | a, state, DRecord l -> Map.foldBack (fun (i,k) v state -> apply s > (a, record3 ((i, "state"), state) (((l.Count + 1), "key"), DSymbol k) (((l.Count > + 2), "value"), v))) l state > | _, _, r -> raise_type_error s <| sprintf "Expected a record.\nGot: > %s" (show_data r) > | EOp(_,RecordLength,[[a]]) -> > match term s a with > | DRecord l -> Map.count l |> LitInt32 |> DLit > | r -> raise_type_error s <| sprintf "Expected a record.\nGot: %s" > (show_data r) > | EOp(_,RecordTypeMap,[[a;EType(_,b)]]) -> > let a,l = term s a, ty_record s b > Map.map (fun (_i,k) v -> type_apply s (apply s (a, DSymbol k)) v) l > |> DRecord > | EOp(_,RecordTypeIter,[[a;EType(_,b)]]) -> > let a,l = term s a, ty_record s b > Map.iter (fun (_i, k) v -> > match type_apply s (apply s (a, DSymbol k)) v with > | DB -> () > | x -> raise_type_error s <| sprintf "Expected an unit > value.\nGot: %s" (show_data x) > ) l > DB > | EOp(_,RecordTypeFold,[[f;state;EType(_,x)]]) -> > let f,state,l = term s f, term s state, ty_record s x > Map.fold (fun state (_, k) v -> type_apply s (apply s ((apply s (f, > state), DSymbol k))) v) state l > | EOp(_,RecordTypeFoldBack,[[f;state;EType(_,x)]]) -> > let f,state,l = term s f, term s state, ty_record s x > Map.foldBack (fun (_, k) v state -> apply s ((type_apply s (apply s > (f, DSymbol k)) v), state)) l state > | EOp(_,RecordTypeLength,[[EType(_,a)]]) -> > Map.count (ty_record s a) |> LitInt32 |> DLit > | EOp(_,RecordTypeTryFind,[[EType(_,a);k;on_succ;on_fail]]) -> > match ty_record s a, term s k with > | l, DSymbol k -> > match l |> Map.tryPick (fun (_, k') v -> if k' = k then Some v > else None) with > | Some v -> type_apply s (term s on_succ) v > | None -> apply s (term s on_fail, DB) > | _, k -> raise_type_error s <| sprintf "Expected a symbol.\nGot: > %s" (show_data k) > | EOp(_,UnionToRecord,[[EType(_,a);on_succ]]) -> > type_apply s (term s on_succ) (YRecord (ty_union s a).Item.cases) > | EOp(_,Add,[[a;b]]) -> > let inline op a b = a + b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitInt8 |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitInt16 |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitInt64 |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitUInt8 |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitUInt16 |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitUInt32 |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitUInt64 |> DLit > | LitFloat32 a, LitFloat32 b -> op a b |> nan_guardf32 |> > LitFloat32 |> DLit > | LitFloat64 a, LitFloat64 b -> op a b |> nan_guardf64 |> > LitFloat64 |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be both numeric and equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > if is_lit_zero a then b > elif is_lit_zero b then a > elif is_numeric a_ty then push_binop s Add (a,b) a_ty > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a numeric type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to have > the same numeric types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > | EOp(_,Sub,[[a;b]]) -> > let inline op a b = a - b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitInt8 |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitInt16 |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitInt64 |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitUInt8 |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitUInt16 |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitUInt32 |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitUInt64 |> DLit > | LitFloat32 a, LitFloat32 b -> op a b |> nan_guardf32 |> > LitFloat32 |> DLit > | LitFloat64 a, LitFloat64 b -> op a b |> nan_guardf64 |> > LitFloat64 |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be both numeric and equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > if is_lit_zero a && is_signed_numeric a_ty then push_op s > Neg b b_ty > elif is_lit_zero b then a > elif is_any_int a_ty && a = b then DLit(lit_zero a_ty) > elif is_numeric a_ty then push_binop s Sub (a,b) a_ty > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a numeric type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to have > the same numeric types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > | EOp(_,Mult,[[a;b]]) -> > let inline op a b = a * b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitInt8 |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitInt16 |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitInt64 |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitUInt8 |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitUInt16 |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitUInt32 |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitUInt64 |> DLit > | LitFloat32 a, LitFloat32 b -> op a b |> nan_guardf32 |> > LitFloat32 |> DLit > | LitFloat64 a, LitFloat64 b -> op a b |> nan_guardf64 |> > LitFloat64 |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be both numeric and equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > if is_int_lit_zero a || is_int_lit_zero b then lit_zero a_ty > |> DLit > elif is_lit_one a then b > elif is_lit_one b then a > elif is_numeric a_ty then push_binop s Mult (a,b) a_ty > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a numeric type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to have > the same numeric types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > | EOp(_,Div,[[a;b]]) -> > let inline op a b = a / b > try > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitInt8 |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitInt16 |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitInt64 |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitUInt8 |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitUInt16 |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitUInt32 |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitUInt64 |> DLit > | LitFloat32 a, LitFloat32 b -> op a b |> nan_guardf32 |> > LitFloat32 |> DLit > | LitFloat64 a, LitFloat64 b -> op a b |> nan_guardf64 |> > LitFloat64 |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals > must be both numeric and equal in type.\nGot: %s and %s" (show_lit a) (show_lit > b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > if is_lit_zero b then raise > (System.DivideByZeroException()) > elif is_lit_one b then a > elif is_numeric a_ty then push_binop s Div (a,b) a_ty > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a numeric type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to > have the same numeric types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > with :? System.DivideByZeroException -> > raise_type_error s <| sprintf "An attempt to divide by zero has > been detected at compile time." > | EOp(_,Pow,[[a;b]]) -> > let inline op a b = a ** b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitFloat32 a, LitFloat32 b -> op a b |> nan_guardf32 |> > LitFloat32 |> DLit > | LitFloat64 a, LitFloat64 b -> op a b |> nan_guardf64 |> > LitFloat64 |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be both float and equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty && is_float a_ty then push_binop s Pow (a,b) a_ty > else raise_type_error s <| sprintf "The two sides need to have > the same float types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > | EOp(_,Mod,[[a;b]]) -> > let inline op a b = a % b > try > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitInt8 |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitInt16 |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitInt64 |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitUInt8 |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitUInt16 |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitUInt32 |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitUInt64 |> DLit > | LitFloat32 a, LitFloat32 b -> op a b |> nan_guardf32 |> > LitFloat32 |> DLit > | LitFloat64 a, LitFloat64 b -> op a b |> nan_guardf64 |> > LitFloat64 |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals > must be both numeric and equal in type.\nGot: %s and %s" (show_lit a) (show_lit > b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > if is_lit_zero b then raise > (System.DivideByZeroException()) > elif is_numeric a_ty then push_binop s Mod (a,b) a_ty > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a numeric type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to > have the same numeric types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > with :? System.DivideByZeroException -> > raise_type_error s <| sprintf "An attempt to divide by zero has > been detected at compile time." > | EOp(_,LT,[[a;b]]) -> > let inline op a b = a < b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitBool |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitBool |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitBool |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitBool |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitBool |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitBool |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitBool |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitBool |> DLit > | LitFloat32 a, LitFloat32 b -> op a b |> LitBool |> DLit > | LitFloat64 a, LitFloat64 b -> op a b |> LitBool |> DLit > | LitString a, LitString b -> op a b |> LitBool |> DLit > | LitChar a, LitChar b -> op a b |> LitBool |> DLit > | LitBool a, LitBool b -> op a b |> LitBool |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > if is_primitive a_ty then push_binop s LT (a,b) (YPrim > BoolT) > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a primitive type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to have > the same primitive types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > | EOp(_,LTE,[[a;b]]) -> > let inline op a b = a <= b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitBool |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitBool |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitBool |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitBool |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitBool |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitBool |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitBool |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitBool |> DLit > | LitFloat32 a, LitFloat32 b -> op a b |> LitBool |> DLit > | LitFloat64 a, LitFloat64 b -> op a b |> LitBool |> DLit > | LitString a, LitString b -> op a b |> LitBool |> DLit > | LitChar a, LitChar b -> op a b |> LitBool |> DLit > | LitBool a, LitBool b -> op a b |> LitBool |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > if is_primitive a_ty then push_binop s LTE (a,b) (YPrim > BoolT) > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a primitive type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to have > the same primitive types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > | EOp(_,GT,[[a;b]]) -> > let inline op a b = a > b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitBool |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitBool |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitBool |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitBool |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitBool |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitBool |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitBool |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitBool |> DLit > | LitFloat32 a, LitFloat32 b -> op a b |> LitBool |> DLit > | LitFloat64 a, LitFloat64 b -> op a b |> LitBool |> DLit > | LitString a, LitString b -> op a b |> LitBool |> DLit > | LitChar a, LitChar b -> op a b |> LitBool |> DLit > | LitBool a, LitBool b -> op a b |> LitBool |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > if is_primitive a_ty then push_binop s GT (a,b) (YPrim > BoolT) > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a primitive type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to have > the same primitive types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > | EOp(_,GTE,[[a;b]]) -> > let inline op a b = a >= b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitBool |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitBool |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitBool |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitBool |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitBool |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitBool |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitBool |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitBool |> DLit > | LitFloat32 a, LitFloat32 b -> op a b |> LitBool |> DLit > | LitFloat64 a, LitFloat64 b -> op a b |> LitBool |> DLit > | LitString a, LitString b -> op a b |> LitBool |> DLit > | LitChar a, LitChar b -> op a b |> LitBool |> DLit > | LitBool a, LitBool b -> op a b |> LitBool |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > if is_primitive a_ty then push_binop s GTE (a,b) (YPrim > BoolT) > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a primitive type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to have > the same primitive types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > | EOp(_,EQ,[[a;b]]) -> eq s (term s a) (term s b) > | EOp(_,NEQ,[[a;b]]) -> > let inline op a b = a <> b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitBool |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitBool |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitBool |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitBool |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitBool |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitBool |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitBool |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitBool |> DLit > | LitFloat32 a, LitFloat32 b -> op a b |> LitBool |> DLit > | LitFloat64 a, LitFloat64 b -> op a b |> LitBool |> DLit > | LitString a, LitString b -> op a b |> LitBool |> DLit > | LitChar a, LitChar b -> op a b |> LitBool |> DLit > | LitBool a, LitBool b -> op a b |> LitBool |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | DV(L(a,a_ty)), DV(L(b,_)) when a = b && is_non_float_primitive > a_ty -> LitBool false |> DLit > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > match a, b with > | DLit (LitBool false), x | x, DLit (LitBool false) -> x > | _ -> > if is_primitive a_ty then push_binop s NEQ (a,b) (YPrim > BoolT) > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a primitive type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to have > the same primitive types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > | EOp(_,BitwiseAnd,[[a;b]]) -> > let inline op a b = a &&& b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitInt8 |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitInt16 |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitInt64 |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitUInt8 |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitUInt16 |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitUInt32 |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitUInt64 |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be both ints and equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > if is_any_int a_ty then push_binop s BitwiseAnd (a,b) a_ty > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a int type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to have > the same int types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > | EOp(_,BitwiseOr,[[a;b]]) -> > let inline op a b = a ||| b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitInt8 |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitInt16 |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitInt64 |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitUInt8 |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitUInt16 |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitUInt32 |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitUInt64 |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be both ints and equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > if is_any_int a_ty then push_binop s BitwiseOr (a,b) a_ty > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a int type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to have > the same int types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > | EOp(_,BitwiseXor,[[a;b]]) -> > let inline op a b = a ^^^ b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt8 b -> op a b |> LitInt8 |> DLit > | LitInt16 a, LitInt16 b -> op a b |> LitInt16 |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit > | LitInt64 a, LitInt64 b -> op a b |> LitInt64 |> DLit > | LitUInt8 a, LitUInt8 b -> op a b |> LitUInt8 |> DLit > | LitUInt16 a, LitUInt16 b -> op a b |> LitUInt16 |> DLit > | LitUInt32 a, LitUInt32 b -> op a b |> LitUInt32 |> DLit > | LitUInt64 a, LitUInt64 b -> op a b |> LitUInt64 |> DLit > | a, b -> raise_type_error s <| sprintf "The two literals must > be both ints and equal in type.\nGot: %s and %s" (show_lit a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if a_ty = b_ty then > if is_any_int a_ty then push_binop s BitwiseXor (a,b) a_ty > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a int type.\nGot: %s" (show_ty a_ty) > else > raise_type_error s <| sprintf "The two sides need to have > the same int types.\nGot: %s and %s." (show_ty a_ty) (show_ty b_ty) > | EOp(_,BitwiseComplement,[[a]]) -> > let inline op a = ~~~a > match term s a with > | DLit a -> > match a with > | LitInt8 a -> op a |> LitInt8 |> DLit > | LitInt16 a -> op a |> LitInt16 |> DLit > | LitInt32 a -> op a |> LitInt32 |> DLit > | LitInt64 a -> op a |> LitInt64 |> DLit > | LitUInt8 a -> op a |> LitUInt8 |> DLit > | LitUInt16 a -> op a |> LitUInt16 |> DLit > | LitUInt32 a -> op a |> LitUInt32 |> DLit > | LitUInt64 a -> op a |> LitUInt64 |> DLit > | a -> raise_type_error s <| sprintf "The literal must be an > int.\nGot: %s" (show_lit a) > | a -> > let a_ty = data_to_ty s a > if is_any_int a_ty then push_op s BitwiseComplement a a_ty > else raise_type_error s <| sprintf "The type of the two > arguments needs to be a int type.\nGot: %s" (show_ty a_ty) > | EOp(_,ShiftLeft,[[a;b]]) -> > let inline op a b = a <<< b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt32 b -> op a b |> LitInt8 |> DLit > | LitInt16 a, LitInt32 b -> op a b |> LitInt16 |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit > | LitInt64 a, LitInt32 b -> op a b |> LitInt64 |> DLit > | LitUInt8 a, LitInt32 b -> op a b |> LitUInt8 |> DLit > | LitUInt16 a, LitInt32 b -> op a b |> LitUInt16 |> DLit > | LitUInt32 a, LitInt32 b -> op a b |> LitUInt32 |> DLit > | LitUInt64 a, LitInt32 b -> op a b |> LitUInt64 |> DLit > | a, b -> raise_type_error s <| sprintf "The first literal must > be an int and the second must be a 32-bit signed int.\nGot: %s and %s" (show_lit > a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if is_any_int a_ty && is_int32 b_ty then push_binop s ShiftLeft > (a,b) a_ty > else raise_type_error s <| sprintf "The type of the first > argument must be an int and the second must be a 32-bit signed int.\nGot: %s and > %s" (show_ty a_ty) (show_ty b_ty) > | EOp(_,ShiftRight,[[a;b]]) -> > let inline op a b = a >>> b > match term2 s a b with > | DLit a, DLit b -> > match a, b with > | LitInt8 a, LitInt32 b -> op a b |> LitInt8 |> DLit > | LitInt16 a, LitInt32 b -> op a b |> LitInt16 |> DLit > | LitInt32 a, LitInt32 b -> op a b |> LitInt32 |> DLit > | LitInt64 a, LitInt32 b -> op a b |> LitInt64 |> DLit > | LitUInt8 a, LitInt32 b -> op a b |> LitUInt8 |> DLit > | LitUInt16 a, LitInt32 b -> op a b |> LitUInt16 |> DLit > | LitUInt32 a, LitInt32 b -> op a b |> LitUInt32 |> DLit > | LitUInt64 a, LitInt32 b -> op a b |> LitUInt64 |> DLit > | a, b -> raise_type_error s <| sprintf "The first literal must > be an int and the second must be a 32-bit signed int.\nGot: %s and %s" (show_lit > a) (show_lit b) > | a, b -> > let a_ty, b_ty = data_to_ty s a, data_to_ty s b > if is_any_int a_ty && is_int32 b_ty then push_binop s ShiftRight > (a,b) a_ty > else raise_type_error s <| sprintf "The type of the first > argument must be an int and the second must be a 32-bit signed int.\nGot: %s and > %s" (show_ty a_ty) (show_ty b_ty) > | EOp(_,Neg,[[a]]) -> > let inline op a = -a > match term s a with > | DLit a -> > match a with > | LitInt8 a -> op a |> LitInt8 |> DLit > | LitInt16 a -> op a |> LitInt16 |> DLit > | LitInt32 a -> op a |> LitInt32 |> DLit > | LitInt64 a -> op a |> LitInt64 |> DLit > | LitFloat32 a -> op a |> LitFloat32 |> DLit > | LitFloat64 a -> op a |> LitFloat64 |> DLit > | _ -> raise_type_error s <| sprintf "The literal must be a > signed numeric type.\nGot: %s" (show_lit a) > | a -> > let a_ty = data_to_ty s a > if is_signed_numeric a_ty then push_op s Neg a a_ty > else raise_type_error s <| sprintf "The argument must be a > signed numeric type.\nGot: %s" (show_ty a_ty) > | EOp(_,Tanh,[[a]]) -> > let inline op a = tanh a > match term s a with > | DLit a -> > match a with > | LitFloat32 a -> op a |> nan_guardf32 |> LitFloat32 |> DLit > | LitFloat64 a -> op a |> nan_guardf64 |> LitFloat64 |> DLit > | _ -> raise_type_error s <| sprintf "The literal must be a > float type.\nGot: %s" (show_lit a) > | a -> > let a_ty = data_to_ty s a > if is_float a_ty then push_op s Tanh a a_ty > else raise_type_error s <| sprintf "The argument must be a float > type.\nGot: %s" (show_ty a_ty) > | EOp(_,Log,[[a]]) -> > let inline op a = log a > match term s a with > | DLit a -> > match a with > | LitFloat32 a -> op a |> nan_guardf32 |> LitFloat32 |> DLit > | LitFloat64 a -> op a |> nan_guardf64 |> LitFloat64 |> DLit > | _ -> raise_type_error s <| sprintf "The literal must be a > float type.\nGot: %s" (show_lit a) > | a -> > let a_ty = data_to_ty s a > if is_float a_ty then push_op s Log a a_ty > else raise_type_error s <| sprintf "The argument must be a float > type.\nGot: %s" (show_ty a_ty) > | EOp(_,Exp,[[a]]) -> > let inline op a = exp a > match term s a with > | DLit a -> > match a with > | LitFloat32 a -> op a |> nan_guardf32 |> LitFloat32 |> DLit > | LitFloat64 a -> op a |> nan_guardf64 |> LitFloat64 |> DLit > | _ -> raise_type_error s <| sprintf "The literal must be a > float type.\nGot: %s" (show_lit a) > | a -> > let a_ty = data_to_ty s a > if is_float a_ty then push_op s Exp a a_ty > else raise_type_error s <| sprintf "The argument must be a float > type.\nGot: %s" (show_ty a_ty) > | EOp(_,Sqrt,[[a]]) -> > let inline op a = sqrt a > match term s a with > | DLit a -> > match a with > | LitFloat32 a -> op a |> nan_guardf32 |> LitFloat32 |> DLit > | LitFloat64 a -> op a |> nan_guardf64 |> LitFloat64 |> DLit > | _ -> raise_type_error s <| sprintf "The literal must be a > float type.\nGot: %s" (show_lit a) > | a -> > let a_ty = data_to_ty s a > if is_float a_ty then push_op s Sqrt a a_ty > else raise_type_error s <| sprintf "The argument must be a float > type.\nGot: %s" (show_ty a_ty) > | EOp(_,Sin,[[a]]) -> > let inline op a = sin a > match term s a with > | DLit a -> > match a with > | LitFloat32 a -> op a |> nan_guardf32 |> LitFloat32 |> DLit > | LitFloat64 a -> op a |> nan_guardf64 |> LitFloat64 |> DLit > | _ -> raise_type_error s <| sprintf "The literal must be a > float type.\nGot: %s" (show_lit a) > | a -> > let a_ty = data_to_ty s a > if is_float a_ty then push_op s Sin a a_ty > else raise_type_error s <| sprintf "The argument must be a float > type.\nGot: %s" (show_ty a_ty) > | EOp(_,Cos,[[a]]) -> > let inline op a = cos a > match term s a with > | DLit a -> > match a with > | LitFloat32 a -> op a |> nan_guardf32 |> LitFloat32 |> DLit > | LitFloat64 a -> op a |> nan_guardf64 |> LitFloat64 |> DLit > | _ -> raise_type_error s <| sprintf "The literal must be a > float type.\nGot: %s" (show_lit a) > | a -> > let a_ty = data_to_ty s a > if is_float a_ty then push_op s Cos a a_ty > else raise_type_error s <| sprintf "The argument must be a float > type.\nGot: %s" (show_ty a_ty) > | EOp(_,Conv,[[EType(_,typ);a]]) -> > let typ = ty s typ > let a = term s a > let at = data_to_ty s a > if typ = at then a > else > let inline conv_lit x = > match typ with > | YPrim Int8T -> int8 x |> LitInt8 > | YPrim Int16T -> int16 x |> LitInt16 > | YPrim Int32T -> int32 x |> LitInt32 > | YPrim Int64T -> int64 x |> LitInt64 > | YPrim UInt8T -> uint8 x |> LitUInt8 > | YPrim UInt16T -> uint16 x |> LitUInt16 > | YPrim UInt32T -> uint32 x |> LitUInt32 > | YPrim UInt64T -> uint64 x |> LitUInt64 > | YPrim Float32T -> float32 x |> LitFloat32 > | YPrim Float64T -> float x |> LitFloat64 > | _ -> raise_type_error s <| sprintf "Cannot convert the > literal to the following type: %s" (show_ty typ) > |> DLit > match a with > | DLit (LitInt8 a) -> conv_lit a > | DLit (LitInt16 a) -> conv_lit a > | DLit (LitInt32 a) -> conv_lit a > | DLit (LitInt64 a) -> conv_lit a > | DLit (LitUInt8 a) -> conv_lit a > | DLit (LitUInt16 a) -> conv_lit a > | DLit (LitUInt32 a) -> conv_lit a > | DLit (LitUInt64 a) -> conv_lit a > | DLit (LitFloat32 a) -> conv_lit a > | DLit (LitFloat64 a) -> conv_lit a > | _ -> > let is_convertible_primt x = > match x with > | YPrim BoolT | YPrim CharT | YPrim StringT -> false > | YPrim _ -> true > | _ -> false > if is_convertible_primt at && is_convertible_primt typ then > push_typedop s (TyConv(typ,a)) typ > else raise_type_error s <| sprintf "Cannot convert %s to the > following type: %s" (show_data a) (show_ty typ) > | EOp(_,NanIs,[[a]]) -> > let a = term s a > match data_to_ty s a with > | YPrim (Float32T | Float64T) -> push_op s NanIs a (YPrim BoolT) > | a -> raise_type_error s <| sprintf "Expected a float in NanIs. > Got: %s" (show_ty a) > | EOp(_,Infinity,[[EType(_,a)]]) -> > match ty s a with > | YPrim Float32T -> DLit (LitFloat32 infinityf) > | YPrim Float64T -> DLit (LitFloat64 infinity) > | a -> raise_type_error s "Expected a float.\nGot: %s" (show_ty a) > | EOp(_,Pi,[[EType(_,a)]]) -> > match ty s a with > | YPrim Float32T -> DLit (LitFloat32 System.Single.Pi) > | YPrim Float64T -> DLit (LitFloat64 System.Double.Pi) > | a -> raise_type_error s "Expected a float.\nGot: %s" (show_ty a) > | EOp(_,LitIs,[[a]]) -> > match term s a with > | DLit _ -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,PrimIs,[[a]]) -> > match term s a |> data_to_ty s with > | YPrim _ -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,SymbolIs,[[a]]) -> > match term s a with > | DSymbol _ -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,VarIs,[[a]]) -> > match term s a with > | DNominal(DV _, _) | DV _ -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,UnionIs,[[a]]) -> > match term s a with > | DNominal(DV(L(_,YUnion _)), _) | DNominal(DUnion _, _) -> DLit > (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,HeapUnionIs,[[a]]) -> > match term s a with > | DNominal(DV(L(_,YUnion x)), _) | DNominal(DUnion(_,x), _) -> > match x.Item.layout with UHeap -> true | UStack -> false > |> LitBool |> DLit > | _ -> DLit (LitBool false) > | EOp(_,LayoutIs,[[a]]) -> > match term s a with > | DV(L(_,YLayout _)) -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,NominalIs,[[a]]) -> > match term s a with > | DNominal(_, _) -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,FunctionIs,[[a]]) -> > match term s a with > | DFunction _ | DV(L(_,YFun _)) -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,ExistsIs,[[a]]) -> > match term s a with > | DExists _ -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,PrimTypeIs,[[EType(_,a)]]) -> > match ty s a with > | YPrim _ -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,SymbolTypeIs,[[EType(_,a)]]) -> > match ty s a with > | YSymbol _ -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,UnionTypeIs,[[EType(_,a)]]) -> > match ty s a with > | YNominal _ | YApply _ as a -> > match nominal_type_apply s a with > | YUnion _ -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | _ -> DLit (LitBool false) > | EOp(_,HeapUnionTypeIs,[[EType(_,a)]]) -> > match ty s a with > | YNominal _ | YApply _ as a -> > match nominal_type_apply s a with > | YUnion x -> DLit (LitBool (match x.Item.layout with UHeap -> > true | UStack -> false)) > | _ -> DLit (LitBool false) > | _ -> DLit (LitBool false) > | EOp(_,LayoutTypeIs,[[EType(_,a)]]) -> > match ty s a with > | YLayout _ -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,ExistsTypeIs,[[EType(_,a)]]) -> > match ty s a with > | YExists -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,NominalTypeIs,[[EType(_,a)]]) -> > match ty s a with > | YNominal _ | YApply _ -> DLit (LitBool true) > | _ -> DLit (LitBool false) > | EOp(_,NominalStrip,[[a]]) -> > match term s a with > | DNominal(DV(L(_,YUnion _)), _) | DNominal(DUnion _, _) -> > raise_type_error s "Cannot strip the nominal wrapper from an union." > | DNominal(a,_) -> a > | a -> raise_type_error s <| sprintf "Expected a nominal.\nGot: %s" > (show_data a) > | EOp(_,NominalTypeApply,[[EType(_,a)]]) -> > match ty s a with > | YNominal _ | YApply _ as a -> DExists([[|nominal_type_apply s > a|]], DB) > | a -> raise_type_error s <| sprintf "Expected a nominal type.\nGot: > %s" (show_ty a) > | EOp(_,ExistsStrip,[[a]]) -> > match term s a with > | DExists(_,a) -> a > | a -> raise_type_error s <| sprintf "Expected an existential.\nGot: > %s" (show_data a) > | EOp(_,PrototypeHas,[[prot; EType(_,a)]]) -> > let body (x : Nominal) = > let prot_er () = raise_type_error s "Expected a forall or a > prototype apply." > let rec loop = function > | EForall'(_,_,_,x) -> loop x > | EPrototypeApply(_,prot_id,_) -> > env.prototypes_instances.ContainsKey(prot_id,x.node.id) |> LitBool |> DLit > | _ -> prot_er() > match term s prot with > | DForall(body,_,_,_,_) -> loop body > | _ -> prot_er() > let rec loop = function > | YNominal x -> body x > | YApply(l,_) -> loop l > | a -> raise_type_error s <| sprintf "Expected a nominal.\nGot: > %s" (show_ty a) > loop (ty s a) > | EOp(_,TypeEq,[[EType(_,a);EType(_,b)]]) -> DLit(LitBool(ty s a = ty s > b)) > | EOp(_,FailWith,[[EType(_,typ);a]]) -> > match ty s typ, term s a with > | typ, (DV(L(_,YPrim StringT)) | DLit(LitString _)) & a -> > push_typedop_no_rewrite s (TyFailwith(typ,a)) typ > | _,a -> raise_type_error s "Expected a string as input to > failwith.\nGot: %s" (show_data a) > | EOp(_,FailWith,_) -> raise_type_error s "Malformed FailWith" > | EOp(_,ErrorType,[[a]]) -> term s a |> show_data |> raise_type_error s > | EOp(_,PrintStatic,[[EType(_,a)]]) -> printfn "%s" (ty s a |> show_ty); > DB > | EOp(_,PrintStatic,[[a]]) -> printfn "%s" (term s a |> show_data); DB > | EOp(_,PrintRaw,[[a]]) -> printfn "%A" > (Printable.eval(Choice1Of2(a,id))); DB > | EOp(_,UnionTag,[[a]]) -> > let eval k (h : Union) = h.Item.tags.[[k]] |> LitInt32 |> DLit > match term s a with > | DNominal(DV(L(_,YUnion h) & v) & a, _) -> > match Map.tryFind v s.unions with > | Some (UnionData (k,_)) -> eval k h > | _ -> push_op s UnionTag a (YPrim Int32T) > | DNominal(DUnion(DPair(DSymbol k,_),h), _) -> eval k h > | a -> raise_type_error s <| sprintf "Expected an union.\nGot: %s" > (show_data a) > | EOp(_,Global & op,[[a]]) -> > match term s a with > | DLit (LitString text) & a -> > // if text.Contains "import " || text.Contains "Fable" then > // let s = { s with trace = [[]]; seq = ResizeArray() } > // let l = s.cse |> List.map _.Count |> List.filter ((=) 0) > |> List.length > // Console.WriteLine ($"global / text: {text} / s: %A{s} / > l: {l}") > if s.i.contents < 2 && s.cse |> List.map _.Count |> List.filter > ((=) 0) |> List.length = 2 > then global' text > push_op_no_rewrite s op a YB > | a -> raise_type_error s $"Expected a string literal.\nGot: > {show_data a}" > | EOp(_,ToPythonRecord,[[a]]) -> > match term s a |> dyn false s with > | DRecord _ & a -> push_op_no_rewrite s ToPythonRecord a (YMacro > [[Text "object"]]) > | a -> raise_type_error s $"Expected a record.\nGot: {show_data a}" > | EOp(_,ToPythonNamedTuple,[[n;a]]) -> > match term s n, term s a |> dyn false s with > | (DLit (LitString _) | DV(L(_,YPrim StringT))) & n, DRecord _ & a > -> push_binop_no_rewrite s ToPythonNamedTuple (n,a) (YMacro [[Text "object"]]) > | n, a -> raise_type_error s $"Expected a pair of string and > record.\nGot: {show_data n}\nAnd: {show_data a}" > | EOp(_,VarTag,[[a]]) -> > match term s a with > | DNominal(DV(L(i,_)), _) | DV(L(i,_)) -> DLit (LitInt32 i) > | a -> raise_type_error s $"Expected a runtime variable.\nGot: > {show_data a}" > | EOp(_,TagToSymbol,[[a]]) -> > match term s a with > | DLit (LitInt32 i) -> DSymbol (string i) > | a -> raise_type_error s $"Expected an i32 literal.\nGot: > {show_data a}" > | EOp(_,FunctionTermSlotsGet,[[a]]) -> > match term s a with > | DFunction(_,_,free_vars,_,_,_) -> Array.foldBack (fun x s -> > DPair(x,s)) free_vars DB > | DV(L(_,YFun _)) -> raise_type_error s $"Expected a compile time > function. Got a runtime one." > | a -> raise_type_error s $"Expected a compile time function.\nGot: > {show_data a}" > | EOp(_,FunctionTermSlotsSet,[[a;b]]) -> > match term s a, term s b with > | DFunction(q1,q2,free_vars,q4,q5,a6), b -> > let mutable b = b > let free_vars = > Array.init free_vars.Length (fun _ -> > match b with > | DPair(q,w) -> b <- w; q > | DB -> raise_type_error s "Unexpected end of the tuple > to be set." > | _ -> raise_type_error s $"Expected a pair.\nGot: > {show_data b}" > ) > match b with > | DB -> DFunction(q1,q2,free_vars,q4,q5,a6) > | _ -> raise_type_error s $"Expected an unit end of the > tuple.\nGot: {show_data b}" > | DV(L(_,YFun _)), _ -> raise_type_error s $"Expected a compile time > function. Got a runtime one." > | a, _ -> raise_type_error s $"Expected a compile time > function.\nGot: {show_data a}" > | EOp(_,SizeOf,[[EType(_,a)]]) -> > match ty s a with > | YB | YSymbol _ -> DLit (LitInt32 0) > | YPrim (Int8T | UInt8T | BoolT) -> DLit (LitInt32 1) > | YPrim (Int16T | UInt16T) -> DLit (LitInt32 2) > | YPrim (Int32T | UInt32T | Float32T) -> DLit (LitInt32 4) > | YPrim (Int64T | UInt64T | Float64T) -> DLit (LitInt32 8) > | a -> push_typedop s (TySizeOf a) (YPrim Int32T) > | EOp(_,FreeVars,[[a]]) -> > let x = term s a |> data_free_vars > Array.foldBack (fun x s -> DPair(DV x,s)) x (DRecord Map.empty) > | EOp(_,FreeVarsReplace,[[a;b]]) -> > let a = term s a > let b = term s b > let a_fv = a |> data_free_vars > let b_fv = b |> data_free_vars > if a_fv.Length <> b_fv.Length then raise_type_error s "The two > expressions need to have the same number of free variables." > let d = Dictionary(HashIdentity.Reference) > Array.iter2 (fun (L(_,ta) as a) (L(_,tb) as b) -> > if ta <> tb then raise_type_error s $"The free variables can > only be replaced with free vars of the same type.\nGot: {show_ty ta}\nExpected: > {show_ty tb}" > d.Add(a,b) > ) a_fv b_fv > data_free_vars_replace s d a > | EOp(_,HashSetCreate,[[]]) -> DHashSet(HashSet(HashIdentity.Reference)) > | EOp(_,HashSetAdd,[[h;k]]) -> > match term s h, term s k with > | DHashSet h, k -> DLit(LitBool(h.Add k)) > | h, _ -> raise_type_error s $"Expected a compile time > HashSet.\nGot: {show_data h}" > | EOp(_,HashSetContains,[[h;k]]) -> > match term s h, term s k with > | DHashSet h, k -> DLit(LitBool(h.Contains k)) > | h, _ -> raise_type_error s $"Expected a compile time > HashSet.\nGot: {show_data h}" > | EOp(_,HashSetRemove,[[h;k]]) -> > match term s h, term s k with > | DHashSet h, k -> DLit(LitBool(h.Remove k)) > | h, _ -> raise_type_error s $"Expected a compile time > HashSet.\nGot: {show_data h}" > | EOp(_,HashSetCount,[[h]]) -> > match term s h with > | DHashSet h -> DLit(LitInt32(h.Count)) > | h -> raise_type_error s $"Expected a compile time HashSet.\nGot: > {show_data h}" > | EOp(_,HashMapCreate,[[]]) -> > DHashMap(OrderedDictionary(HashIdentity.Reference), ref true) > | EOp(_,HashMapSetImmutable,[[h]]) -> > match term s h with > | DHashMap(_, is_writable) -> is_writable.Value <- false; DB > | h -> raise_type_error s $"Expected a compile time HashMap.\nGot: > {show_data h}" > | EOp(_,HashMapSet,[[h;k;v]]) -> > match term s h, term s k, term s v with > | DHashMap(h, is_writable), k, v when is_writable.Value -> h.[[k]] > <- v; DB > | DHashMap(h, _), _, _ -> raise_type_error s "The hash map has been > made read-only and cannot be added to." > | h, _, _ -> raise_type_error s $"Expected a compile time > HashMap.\nGot: {show_data h}" > | EOp(_,HashMapAdd,[[h;k;v]]) -> > match term s h, term s k, term s v with > | DHashMap(h, is_writable), k, v when is_writable.Value -> if > h.TryAdd(k,v) then DB else raise_type_error s "The entry with the same key > already exists in the dictionary." > | DHashMap(h, _), _, _ -> raise_type_error s "The hash map has been > made read-only and cannot be added to." > | h, _, _ -> raise_type_error s $"Expected a compile time > HashMap.\nGot: {show_data h}" > | EOp(_,HashMapTryAdd,[[h;k;v]]) -> > match term s h, term s k, term s v with > | DHashMap(h, is_writable), k, v -> if is_writable.Value then > DLit(LitBool(h.TryAdd(k,v))) else raise_type_error s "The hash map has been made > read-only and cannot be added to." > | h, _, _ -> raise_type_error s $"Expected a compile time > HashMap.\nGot: {show_data h}" > | EOp(_,HashMapContains,[[h;k]]) -> > match term s h, term s k with > | DHashMap(h, _), k -> DLit(LitBool(h.ContainsKey k)) > | h, _ -> raise_type_error s $"Expected a compile time > HashMap.\nGot: {show_data h}" > | EOp(_,HashMapRemove,[[h;k]]) -> > match term s h, term s k with > | DHashMap(h, is_writable), k -> if is_writable.Value then > DLit(LitBool(h.Remove k)) else raise_type_error s "The hash map has been made > read-only and cannot be removed from." > | h, _ -> raise_type_error s $"Expected a compile time > HashMap.\nGot: {show_data h}" > | EOp(_,HashMapCount,[[h]]) -> > match term s h with > | DHashMap(h, _) -> DLit(LitInt32(h.Count)) > | h -> raise_type_error s $"Expected a compile time HashMap.\nGot: > {show_data h}" > | EOp(_,HashMapTryGet,[[h;k]]) -> > match term s h, term s k with > | DHashMap(h, _), k -> > if k |> h.ContainsKey > then k |> h.GetValueOrDefault > else DSymbol "null" > | h, _ -> raise_type_error s $"Expected a compile time > HashMap.\nGot: {show_data h}" > | EOp(_,StaticStringConcat,[[l]]) -> > let strb = System.Text.StringBuilder() > let rec loop = function > | DPair(a,b) -> loop a; loop b > | DLit(LitString x) -> strb.Append(x) |> ignore > | DB -> () > | x -> raise_type_error s $"Expected a compile time string or a > pair of them.\nGot: {show_data x}" > loop (term s l) > DLit(LitString(strb.ToString())) > | EOp(_,Printf,[[fmt;str]]) -> > let fmt,str = term2 s fmt str > match fmt with > | DLit(LitString _) -> push_binop_no_rewrite s Printf (fmt, str) YB > | _ -> raise_type_error s $"Expected a compile time string as the > format.\nGot: {show_data fmt}" > | EOp(_,op,a) -> raise_type_error s <| sprintf "Compiler error: %A with > %i args not implemented" op (List.length a) > > let s : LangEnv = { > trace = [[]] > seq = null > cse = [[]] > unions = Map.empty > i = ref 0 > env_global_type = [[||]] > env_global_term = [[||]] > env_stack_type = [[||]] > env_stack_term = [[||]] > backend = backend_strings.Add env.backend > globals = ResizeArray () > } > let ty_to_data x = ty_to_data {s with i = ref 0} x > let nominal_apply x = nominal_type_apply {s with i = ref 0} x > > match x with > | EFun'(r,_,_,_,_) -> term_scope s (EApply(r,x,EB r)), > {join_point_method=join_point_method; join_point_closure=join_point_closure; > ty_to_data=ty_to_data; nominal_apply=nominal_apply; globals=s.globals} > | EForall' _ -> raise_type_error s "The main function should not have a > forall." > | _ -> raise_type_error s "Expected a function as the main." > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## CodegenUtils > > ── fsharp ────────────────────────────────────────────────────────────────────── > // open System.Text > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### CodegenEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type CodegenEnv = > { > text : System.Text.StringBuilder > indent : int > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### line > > ── fsharp ────────────────────────────────────────────────────────────────────── > let line x (s : string) = x.text.Append(' ', x.indent).AppendLine s |> ignore > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### indent > > ── fsharp ────────────────────────────────────────────────────────────────────── > let indent x : CodegenEnv = {x with indent=x.indent+4} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_dec_point > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_dec_point (x : string) = if x.IndexOf('.') = -1 && x.Contains "E" |> not > then x + ".0" else x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### CodegenError > > ── fsharp ────────────────────────────────────────────────────────────────────── > exception CodegenError of Range option * string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### CodegenErrorWithPos > > ── fsharp ────────────────────────────────────────────────────────────────────── > exception CodegenErrorWithPos of Trace * string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### raise_codegen_error > > ── fsharp ────────────────────────────────────────────────────────────────────── > let raise_codegen_error x = raise (CodegenError (None,x)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### raise_codegen_error_backend > > ── fsharp ────────────────────────────────────────────────────────────────────── > let raise_codegen_error_backend r x = raise (CodegenError (Some r,x)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### raise_codegen_error' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let raise_codegen_error' trace (r,x) = raise (CodegenErrorWithPos(Option.fold > (fun s x -> x :: s) trace r,x)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## CodegenFsharp > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### backend_nameFsharp > > ── fsharp ────────────────────────────────────────────────────────────────────── > let backend_nameFsharp = "Fsharp" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### litFsharp > > ── fsharp ────────────────────────────────────────────────────────────────────── > let litFsharp = function > | LitInt8 x -> sprintf "%iy" x > | LitInt16 x -> sprintf "%is" x > | LitInt32 x -> sprintf "%i" x > | LitInt64 x -> sprintf "%iL" x > | LitUInt8 x -> sprintf "%iuy" x > | LitUInt16 x -> sprintf "%ius" x > | LitUInt32 x -> sprintf "%iu" x > | LitUInt64 x -> sprintf "%iUL" x > | LitFloat32 x -> > if x = infinityf then "infinityf" > elif x = -infinityf then "-infinityf" > elif System.Single.IsNaN x then "nanf" > else x.ToString("R") |> add_dec_point |> sprintf "%sf" > | LitFloat64 x -> > if x = infinity then "infinity" > elif x = -infinity then "-infinity" > elif System.Double.IsNaN x then "nan" > else x.ToString("R") |> add_dec_point > | LitString x -> > let strb = System.Text.StringBuilder(x.Length+2) > strb.Append '"' |> ignore > String.iter (function > | '"' -> strb.Append "\\\"" > | '\b' -> strb.Append @"\b" > | '\t' -> strb.Append @"\t" > | '\n' -> strb.Append @"\n" > | '\r' -> strb.Append @"\r" > | '\\' -> strb.Append @"\\" > | x -> strb.Append x > >> ignore > ) x > strb.Append '"' |> ignore > strb.ToString() > | LitChar x -> > match x with > | '\b' -> @"\b" > | '\n' -> @"\n" > | '\t' -> @"\t" > | '\r' -> @"\r" > | '\\' -> @"\\" > | x -> string x > |> sprintf "'%s'" > | LitBool x -> if x then "true" else "false" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### primFsharp > > ── fsharp ────────────────────────────────────────────────────────────────────── > let primFsharp = function > | Int8T -> "int8" > | Int16T -> "int16" > | Int32T -> "int32" > | Int64T -> "int64" > | UInt8T -> "uint8" > | UInt16T -> "uint16" > | UInt32T -> "uint32" > | UInt64T -> "uint64" > | Float32T -> "float32" > | Float64T -> "float" > | BoolT -> "bool" > | StringT -> "string" > | CharT -> "char" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### type_litFsharp > > ── fsharp ────────────────────────────────────────────────────────────────────── > let type_litFsharp = function > | YLit x -> litFsharp x > | YSymbol x -> x > | x -> raise_codegen_error "Compiler error: Expecting a type literal in the > macro." > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### UnionRecFsharp > > ── fsharp ────────────────────────────────────────────────────────────────────── > type UnionRecFsharp = {tag : int; free_vars : Map<int * string, TyV[[]]>} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### LayoutRecFsharp > > ── fsharp ────────────────────────────────────────────────────────────────────── > type LayoutRecFsharp = {tag : int; data : Data; free_vars : TyV[[]]; > free_vars_by_key : Map<int * string, TyV[[]]>} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### MethodRecFsharp > > ── fsharp ────────────────────────────────────────────────────────────────────── > type MethodRecFsharp = {tag : int; free_vars : L<Tag,Ty>[[]]; range : Ty; body : > TypedBind[[]]} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ClosureRecFsharp > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ClosureRecFsharp = {tag : int; free_vars : L<Tag,Ty>[[]]; domain_args : > TyV[[]]; range : Ty; body : TypedBind[[]]} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### codegenFsharp > > ── fsharp ────────────────────────────────────────────────────────────────────── > let codegenFsharp (env : PartEvalResult) (x : TypedBind [[]]) = > let types = ResizeArray() > let functions = ResizeArray() > > let print is_type show r = > let s = {text=System.Text.StringBuilder(); indent=0} > show s r > let text = s.text.ToString() > if is_type then types.Add(text) else functions.Add(text) > > let layout show = > let dict' = Dictionary(HashIdentity.Structural) > let dict = Dictionary(HashIdentity.Reference) > let f x : LayoutRecFsharp = > match x with > | YLayout(x,_) -> > let x = env.ty_to_data x > let a, b = > match x with > | DRecord a -> let a = Map.map (fun _ -> data_free_vars) a in a > |> Map.toArray |> Array.collect snd, a > | _ -> data_free_vars x, Map.empty > {data=x; free_vars=a; free_vars_by_key=b; tag=dict'.Count} > | _ -> raise_codegen_error $"Compiler error: Expected a layout type > (3).\nGot: %s{show_ty x}" > fun x -> > let mutable dirty = false > let r = memoize dict (memoize dict' (fun x -> dirty <- true; f x)) x > if dirty then print true show r > r > > let union show = > let dict = Dictionary(HashIdentity.Reference) > let f (a : Map<int * string,Ty>) : UnionRecFsharp = {free_vars=a |> > Map.map (fun _ -> env.ty_to_data >> data_free_vars); tag=dict.Count} > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print true show r > r > > let jp f show = > let dict = Dictionary(HashIdentity.Structural) > let f x = f (x, dict.Count) > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print false show r > r > > let args x = x |> Array.map (fun (L(i,_)) -> sprintf "v%i" i) |> > String.concat ", " > let show_w = function WV (L(i,_)) -> sprintf "v%i" i | WLit a -> litFsharp a > > let global' = > let has_added = HashSet env.globals > fun x -> if has_added.Add(x) then env.globals.Add x > > let rec tyv x = > match x with > | YUnion a -> > let a = a.Item > match a.layout with > | UHeap -> sprintf "UH%i" (uheap a.cases).tag > | UStack -> sprintf "US%i" (ustack a.cases).tag > | YLayout(_,lay) as a -> > match lay with > | Heap -> sprintf "Heap%i" (heap a).tag > | HeapMutable -> sprintf "Mut%i" (mut a).tag > | StackMutable -> raise_codegen_error "Compiler error: The F# > backend doesn't support stack mutable layout types." > | YMacro [[Text "backend_switch "; Type (YRecord r)]] -> > match r |> Map.tryPick (fun (_, k) v -> if k = backend_nameFsharp > then Some v else None) with > | Some x -> tup_ty x > | None -> raise_codegen_error $"In the backend_switch, expected a > record with the '{backend_nameFsharp}' field." > | YMacro a -> a |> List.map (function Text a -> a | Type a -> tup_ty a | > TypeLit a -> type_litFsharp a) |> String.concat "" > | YPrim a -> primFsharp a > | YArray a -> sprintf "(%s [[]])" (tup_ty a) > | YFun(a,b,FT_Vanilla) -> sprintf "(%s -> %s)" (tup_ty a) (tup_ty b) > | YExists -> raise_codegen_error "Existentials are not supported at > runtime. They are a compile time feature only." > | YForall -> raise_codegen_error "Foralls are not supported at runtime. > They are a compile time feature only." > | a -> raise_codegen_error $"Type not supported in the codegen.\nGot: > %A{a}" > and args_tys x = x |> Array.map (fun (L(i,t)) -> sprintf "v%i : %s" i > (tup_ty t)) |> String.concat ", " > and binds (s : CodegenEnv) (x : TypedBind [[]]) = > Array.iter (function > | TyLet(d,trace,a) -> try op s (Some d) a with :? CodegenError as e > -> raise_codegen_error' trace (e.Data0,e.Data1) > | TyLocalReturnOp(trace,a,_) -> try op s None a with :? CodegenError > as e -> raise_codegen_error' trace (e.Data0,e.Data1) > | TyLocalReturnData(d,trace) -> try line s (tup d) with :? > CodegenError as e -> raise_codegen_error' trace (e.Data0,e.Data1) > ) x > and tup x = > match data_term_vars x with > | [[||]] -> "()" > | [[|x|]] -> show_w x > | x -> Array.map show_w x |> String.concat ", " |> sprintf "struct (%s)" > and tup_ty x = > match env.ty_to_data x |> data_free_vars |> Array.map (fun (L(_,x)) -> > tyv x) with > | [[||]] -> "unit" > | [[|x|]] -> x > | x -> String.concat " * " x |> sprintf "struct (%s)" > and op s d a = > let jp (a, b) = > let args = args b > match a with > | JPMethod(a,b) -> sprintf "method%i(%s)" (method (a,b)).tag args > | JPClosure(a,b) -> sprintf "closure%i(%s)" (closure (a,b)).tag args > let free_vars do_annot x = > let f (L(i,t)) = if do_annot then sprintf "v%i : %s" i (tyv t) else > sprintf "v%i" i > match data_free_vars x with > | [[||]] -> "()" > | [[|x|]] -> f x > | x -> Array.map f x |> String.concat ", " |> sprintf "struct (%s)" > let simple x = > match d with > | None -> x > | Some d -> match free_vars true d with "()" -> x | d -> sprintf > "let %s = %s" d x > |> line s > let complex f = > match d with > | None -> f s : unit > | Some d -> match free_vars true d with "()" -> f s | d -> line s > (sprintf "let %s =" d); f (indent s) > let layout_vars a = > let f i x = > match x with > | WV(L(i',_)) -> sprintf "l%i = v%i" i i' > | WLit x -> sprintf "l%i = %s" i (litFsharp x) > a |> data_term_vars |> Array.mapi f |> String.concat "; " > let layout_index i x = > x |> Array.map (fun (L(i',_)) -> sprintf "v%i.l%i" i i') > |> String.concat ", " > |> function "" -> () | x -> simple x > let length (a,b) = > match a with > | YPrim UInt8T -> sprintf "System.Convert.ToByte %s.Length" (tup b) > | YPrim UInt16T -> sprintf "System.Convert.ToUInt16 %s.Length" (tup > b) > | YPrim UInt32T -> sprintf "System.Convert.ToUInt32 %s.Length" (tup > b) > | YPrim UInt64T -> sprintf "System.Convert.ToUInt64 %s.Length" (tup > b) > | YPrim Int8T -> sprintf "System.Convert.ToSByte %s.Length" (tup b) > | YPrim Int16T -> sprintf "System.Convert.ToInt16 %s.Length" (tup b) > | YPrim Int32T -> sprintf "%s.Length" (tup b) > | YPrim Int64T -> sprintf "System.Convert.ToInt64 %s.Length" (tup b) > | _ -> raise_codegen_error "Compiler error: Expected an int in > length" > |> simple > match a with > | TyMacro a -> a |> List.map (function CMText x -> x | CMTerm x -> tup x > | CMType x -> tup_ty x | CMTypeLit x -> type_litFsharp x) |> String.concat "" |> > simple > | TySizeOf t -> simple $"sizeof<{tup_ty t}>" > | TyIf(cond,tr,fl) -> > complex <| fun s -> > line s (sprintf "if %s then" (tup cond)) > binds (indent s) tr > match fl with > | [[|TyLocalReturnData(DB,_)|]] -> () > | _ -> > line s "else" > binds (indent s) fl > | TyJoinPoint(a,args) -> simple (jp (a, args)) > | TyBackend(_,_,r) -> raise_codegen_error_backend r "The F# backend does > not support nesting other backends." > | TyWhile(a,b) -> > complex <| fun s -> > line s (sprintf "while %s do" (jp a)) > binds (indent s) b > | TyDo a -> > complex <| fun s -> > line s "do" > binds (indent s) a > | TyIndent a -> > complex <| fun s -> > binds (indent s) a > | TyIntSwitch(L(i,_),on_succ,on_fail) -> > complex <| fun s -> > line s (sprintf "match v%i with" i) > Array.iteri (fun i x -> > line s (sprintf "| %i ->" i) > binds (indent s) x > ) on_succ > line s "| _ ->" > binds (indent s) on_fail > | TyUnionUnbox(is,x,on_succs,on_fail) -> > complex <| fun s -> > let case_tags = x.Item.tags > line s (sprintf "match %s with" (is |> List.map (fun (L(i,_)) -> > $"v{i}") |> String.concat ", ")) > let prefix = > let x = x.Item > match x.layout with > | UHeap -> sprintf "UH%i" (uheap x.cases).tag > | UStack -> sprintf "US%i" (ustack x.cases).tag > Map.iter (fun k (a,b) -> > let i = case_tags.[[k]] > let cases = > a |> List.map (fun a -> > match data_free_vars a with > | [[||]] -> "" > | x -> sprintf "(%s)" (args x) > |> sprintf "%s_%i%s" prefix i > ) > |> String.concat ", " > line s (sprintf "| %s -> (* %s *)" cases k) > binds (indent s) b > ) on_succs > on_fail |> Option.iter (fun b -> > line s "| _ ->" > binds (indent s) b > ) > | TyUnionBox(a,b,c) -> > let c = c.Item > let i = c.tags.[[a]] > let vars = > match data_term_vars b with > | [[||]] -> "" > | x -> Array.map show_w x |> String.concat ", " |> sprintf > "(%s)" > match c.layout with > | UHeap -> sprintf "UH%i_%i%s" (uheap c.cases).tag i vars > | UStack -> sprintf "US%i_%i%s" (ustack c.cases).tag i vars > |> simple > | TyToLayout(a,b) -> > let a = layout_vars a > match b with > | YLayout(_,layout) -> > match layout with > | Heap -> if a = "" then sprintf "Heap%i()" (heap b).tag else > sprintf "{%s} : Heap%i" a (heap b).tag > | HeapMutable -> if a = "" then sprintf "Mut%i()" (mut b).tag > else sprintf "{%s} : Mut%i" a (mut b).tag > | StackMutable -> raise_codegen_error "The F# backend doesn't > support stack mutable layout types." > | _ -> raise_codegen_error $"Compiler error: Expected a layout type > (4).\nGot: %s{show_ty b}" > |> simple > | TyLayoutIndexAll(L(i,YLayout(_,lay) & a)) -> > match lay with > | Heap -> heap a > | HeapMutable -> mut a > | StackMutable -> raise_codegen_error "The F# backend doesn't > support indexing into stack mutable layout types." > |> fun x -> x.free_vars |> layout_index i > | TyLayoutIndexByKey(L(i,YLayout(_,lay) & a),key) -> > match lay with > | Heap -> heap a > | HeapMutable -> mut a > | StackMutable -> raise_codegen_error "The F# backend doesn't > support indexing into stack mutable layout types." > |> fun x -> > x.free_vars_by_key > |> Map.tryPick (fun (_, k) v -> if k = key then Some v else > None) > |> Option.iter (layout_index i) > | TyLayoutIndexAll _ | TyLayoutIndexByKey _ -> raise_codegen_error > "Compiler error: Expected the TyV in layout index to be a layout type." > | TyLayoutMutableSet(L(i,t),b,c) -> > let a = List.fold (fun s k -> > match s with > | DRecord l -> l |> Map.pick (fun (_,k') v -> if k' = k then > Some v else None) > | _ -> raise_codegen_error "Compiler error: Expected a record.") > (mut t).data b > Array.iter2 (fun (L(i',_)) b -> > line s (sprintf "v%i.l%i <- %s" i i' (show_w b)) > ) (data_free_vars a) (data_term_vars c) > | TyArrayLiteral(a,b) -> simple <| sprintf "[[|%s|]]" (List.map tup b |> > String.concat "; ") > | TyArrayCreate(a,b) -> > match b with > | DLit(LitInt32 _) | DV(L(_,YPrim Int32T)) -> simple (sprintf > "Array.zeroCreate<%s> (%s)" (tup_ty a) (tup b)) > | _ -> simple (sprintf "Array.zeroCreate<%s> > (System.Convert.ToInt32(%s))" (tup_ty a) (tup b)) > | TyArrayLength(a,b) -> length (a,b) > | TyStringLength(a,b) -> length (a,b) > | TyFailwith(a,b) -> simple (sprintf "failwith<%s> %s" (tup_ty a) (tup > b)) > | TyConv(a,b) -> > let b = tup b > match a with > | YPrim Int8T -> $"int8 {b}" > | YPrim Int16T -> $"int16 {b}" > | YPrim Int32T -> $"int32 {b}" > | YPrim Int64T -> $"int64 {b}" > | YPrim UInt8T -> $"uint8 {b}" > | YPrim UInt16T -> $"uint16 {b}" > | YPrim UInt32T -> $"uint32 {b}" > | YPrim UInt64T -> $"uint64 {b}" > | YPrim Float32T -> $"float32 {b}" > | YPrim Float64T -> $"float {b}" > | _ -> raise_codegen_error $"Compiler error: Unexpected type in > Conv. Got: {show_ty a}" > |> simple > | TyApply(L(i,_),b) -> sprintf "v%i %s" i (tup b) |> simple > | TyOp(Global, [[DLit (LitString x)]]) -> global' x > | TyOp(op,l) -> > match op, l with > | Dyn,[[a]] -> tup a > | TypeToVar, _ -> raise_codegen_error "The use of `` should never > appear in generated code." > | StringIndex, [[a;b]] -> sprintf "%s.[[int %s]]" (tup a) (tup b) > | StringSlice, [[a;b;c]] -> sprintf "%s.[[int %s..int %s]]" (tup a) > (tup b) (tup c) > | ArrayIndex, [[a;b]] -> sprintf "%s.[[int %s]]" (tup a) (tup b) > | ArrayIndexSet, [[a;b;c]] -> sprintf "%s.[[int %s]] <- %s" (tup a) > (tup b) (tup c) > > // Math > | Add, [[a;b]] -> sprintf "%s + %s" (tup a) (tup b) > | Sub, [[a;b]] -> sprintf "%s - %s" (tup a) (tup b) > | Mult, [[a;b]] -> sprintf "%s * %s" (tup a) (tup b) > | Div, [[a;b]] -> sprintf "%s / %s" (tup a) (tup b) > | Mod, [[a;b]] -> sprintf "%s %% %s" (tup a) (tup b) > | Pow, [[a;b]] -> sprintf "%s ** %s" (tup a) (tup b) > | LT, [[a;b]] -> sprintf "%s < %s" (tup a) (tup b) > | LTE, [[a;b]] -> sprintf "%s <= %s" (tup a) (tup b) > | EQ, [[a;b]] -> sprintf "%s = %s" (tup a) (tup b) > | NEQ, [[a;b]] -> sprintf "%s <> %s" (tup a) (tup b) > | GT, [[a;b]] -> sprintf "%s > %s" (tup a) (tup b) > | GTE, [[a;b]] -> sprintf "%s >= %s" (tup a) (tup b) > | BoolAnd, [[a;b]] -> sprintf "%s && %s" (tup a) (tup b) > | BoolOr, [[a;b]] -> sprintf "%s || %s" (tup a) (tup b) > | BitwiseAnd, [[a;b]] -> sprintf "%s &&& %s" (tup a) (tup b) > | BitwiseOr, [[a;b]] -> sprintf "%s ||| %s" (tup a) (tup b) > | BitwiseXor, [[a;b]] -> sprintf "%s ^^^ %s" (tup a) (tup b) > | BitwiseComplement, [[a]] -> sprintf "~~~%s" (tup a) > > | ShiftLeft, [[a;b]] -> sprintf "%s <<< %s" (tup a) (tup b) > | ShiftRight, [[a;b]] -> sprintf "%s >>> %s" (tup a) (tup b) > > | Neg, [[x]] -> sprintf " -%s" (tup x) > | Log, [[x]] -> sprintf "log %s" (tup x) > | Exp, [[x]] -> sprintf "exp %s" (tup x) > | Tanh, [[x]] -> sprintf "tanh %s" (tup x) > | Sqrt, [[x]] -> sprintf "sqrt %s" (tup x) > | Sin, [[x]] -> sprintf "sin %s" (tup x) > | Cos, [[x]] -> sprintf "cos %s" (tup x) > | NanIs, [[x]] -> > match x with > | DLit(LitFloat32 _) | DV(L(_,YPrim Float32T)) -> sprintf > "System.Single.IsNaN(%s)" (tup x) > | DLit(LitFloat64 _) | DV(L(_,YPrim Float64T)) -> sprintf > "System.Double.IsNaN(%s)" (tup x) > | _ -> raise_codegen_error "Compiler error: Invalid type in > NanIs." > | UnionTag, [[DV(L(i,YUnion h))]] -> > let h = h.Item > let ty = > match h.layout with > | UHeap -> sprintf "UH%i" (uheap h.cases).tag > | UStack -> sprintf "US%i" (ustack h.cases).tag > let items = > h.cases > |> Seq.map (fun (KeyValue ((i, _), _)) -> > $"{ty}_{i}, {i}" > ) > |> String.concat "; " > $"[[ {items} ]] |> Map |> Map.find v{i}" > | _ -> raise_codegen_error <| sprintf "Compiler error: %A with %i > args not supported" op l.Length > |> simple > and heap : _ -> LayoutRecFsharp = layout (fun s x -> > let b = x.free_vars |> Array.map (fun (L(i,t)) -> sprintf "l%i : %s" i > (tyv t)) |> String.concat "; " > if b = "" then line s (sprintf "Heap%i() = class end" x.tag) > else line s (sprintf "Heap%i = {%s}" x.tag b) > ) > and mut : _ -> LayoutRecFsharp = layout (fun s x -> > let b = x.free_vars |> Array.map (fun (L(i,t)) -> sprintf "mutable l%i : > %s" i (tyv t)) |> String.concat "; " > if b = "" then line s (sprintf "Mut%i() = class end" x.tag) > else line s (sprintf "Mut%i = {%s}" x.tag b) > ) > and uheap : _ -> UnionRecFsharp = union (fun s x -> > line s (sprintf "UH%i =" x.tag) > let mutable i = 0 > x.free_vars |> Map.iter (fun _ a -> > match a with > | [[||]] -> line (indent s) (sprintf "| UH%i_%i" x.tag i) > | a -> line (indent s) (sprintf "| UH%i_%i of %s" x.tag i (a |> > Array.map (fun (L(_,t)) -> tyv t) |> String.concat " * ")) > i <- i+1 > ) > ) > and ustack : _ -> UnionRecFsharp = union (fun s x -> > line s (sprintf "[[<Struct>]] US%i =" x.tag) > let mutable i = 0 > x.free_vars |> Map.iter (fun _ a -> > match a with > | [[||]] -> line (indent s) (sprintf "| US%i_%i" x.tag i) > | a -> line (indent s) (sprintf "| US%i_%i of %s" x.tag i (a |> > Array.mapi (fun i' (L(_,t)) -> sprintf "f%i_%i : %s" i i' (tyv t)) |> > String.concat " * ")) > i <- i+1 > ) > ) > and method : _ -> MethodRecFsharp = > jp (fun ((jp_body,key & (C(args,_))),i) -> > match (fst env.join_point_method.[[jp_body]]).[[key]] with > | Some a, Some range, _ -> {tag=i; free_vars=rdata_free_vars args; > range=range; body=a} > | _ -> raise_codegen_error "Compiler error: The method dictionary is > malformed" > ) (fun s x -> > line s (sprintf "method%i (%s) : %s =" x.tag (args_tys x.free_vars) > (tup_ty x.range)) > binds (indent s) x.body > ) > and closure : _ -> ClosureRecFsharp = > jp (fun ((jp_body,key & (C(args,_,fun_ty))),i) -> > match fun_ty with > | YFun(domain,range,FT_Vanilla) -> > match (fst env.join_point_closure.[[jp_body]]).[[key]] with > | Some(domain_args, body) -> {tag=i; free_vars=rdata_free_vars > args; domain_args=data_free_vars domain_args; range=range; body=body} > | _ -> raise_codegen_error "Compiler error: The method > dictionary is malformed" > | YFun(_,_,_) -> raise_codegen_error "Non-standard functions are not > supported in the F# backend." > | _ -> raise_codegen_error "Compiler error: Unexpected type in the > closure join point." > ) (fun s x -> > let domain = > match x.domain_args |> Array.map (fun (L(i,t)) -> sprintf "v%i : > %s" i (tyv t)) with > | [[||]] -> "()" > | [[|x|]] -> sprintf "(%s)" x > | x -> String.concat ", " x |> sprintf "struct (%s)" > line s (sprintf "closure%i (%s) %s : %s =" x.tag (args_tys > x.free_vars) domain (tup_ty x.range)) > binds (indent s) x.body > ) > > let main = System.Text.StringBuilder() > binds {text=main; indent=0} x > > let program = System.Text.StringBuilder() > env.globals |> Seq.iter (fun (x : string) -> program.AppendLine(x) |> > ignore) > types |> Seq.iteri (fun i x -> program.Append(if i = 0 then "type " else > "and ").Append(x) |> ignore) > functions |> Seq.iteri (fun i x -> program.Append(if i = 0 then "let rec " > else "and ").Append(x) |> ignore) > program.Append(main).ToString() > > ── fsharp ────────────────────────────────────────────────────────────────────── > ── [ 3.11s - diagnostics ] ───────────────────────────────────────────────────── > │ input.fsx (328,81)-(328,84) typecheck warning This and other > recursive references to the object(s) being defined will be checked for > initialization-soundness at runtime through the use of a delayed reference. This > is because you are defining one or more recursive objects, rather than recursive > functions. This warning may be suppressed by using '#nowarn "40"' or > '--nowarn:40'. > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## CodegenGleam > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### backend_nameGleam > > ── fsharp ────────────────────────────────────────────────────────────────────── > let backend_nameGleam = "Gleam" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### litGleam > > ── fsharp ────────────────────────────────────────────────────────────────────── > let litGleam = function > | LitInt8 x -> sprintf "%i" x > | LitInt16 x -> sprintf "%i" x > | LitInt32 x -> sprintf "%i" x > | LitInt64 x -> sprintf "%i" x > | LitUInt8 x -> sprintf "%i" x > | LitUInt16 x -> sprintf "%i" x > | LitUInt32 x -> sprintf "%i" x > | LitUInt64 x -> sprintf "%i" x > | LitFloat32 x -> > if x = infinityf then "infinityf" > elif x = -infinityf then "-infinityf" > elif System.Single.IsNaN x then "nanf" > else x.ToString("R") |> add_dec_point |> sprintf "%s" > | LitFloat64 x -> > if x = infinity then "infinity" > elif x = -infinity then "-infinity" > elif System.Double.IsNaN x then "nan" > else x.ToString("R") |> add_dec_point > | LitString x -> > let strb = System.Text.StringBuilder(x.Length+2) > strb.Append '"' |> ignore > String.iter (function > | '"' -> strb.Append "\\\"" > | '\b' -> strb.Append @"\b" > | '\t' -> strb.Append @"\t" > | '\n' -> strb.Append @"\n" > | '\r' -> strb.Append @"\r" > | '\\' -> strb.Append @"\\" > | x -> strb.Append x > >> ignore > ) x > strb.Append '"' |> ignore > strb.ToString() > | LitChar x -> > match x with > | '\b' -> @"\b" > | '\n' -> @"\n" > | '\t' -> @"\t" > | '\r' -> @"\r" > | '\\' -> @"\\" > | x -> string x > |> sprintf "\"%s\"" > | LitBool x -> if x then "True" else "False" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### primGleam > > ── fsharp ────────────────────────────────────────────────────────────────────── > let primGleam = function > | Int8T -> "Int" > | Int16T -> "Int" > | Int32T -> "Int" > | Int64T -> "Int" > | UInt8T -> "Int" > | UInt16T -> "Int" > | UInt32T -> "Int" > | UInt64T -> "Int" > | Float32T -> "Float" > | Float64T -> "Float" > | BoolT -> "Bool" > | StringT -> "String" > | CharT -> "String" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### type_litGleam > > ── fsharp ────────────────────────────────────────────────────────────────────── > let type_litGleam = function > | YLit x -> litGleam x > | YSymbol x -> x > | x -> raise_codegen_error "Compiler error: Expecting a type literal in the > macro." > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### UnionRecGleam > > ── fsharp ────────────────────────────────────────────────────────────────────── > type UnionRecGleam = {tag : int; free_vars : Map<int * string, TyV[[]]>} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### LayoutRecGleam > > ── fsharp ────────────────────────────────────────────────────────────────────── > type LayoutRecGleam = {tag : int; data : Data; free_vars : TyV[[]]; > free_vars_by_key : Map<int * string, TyV[[]]>} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### MethodRecGleam > > ── fsharp ────────────────────────────────────────────────────────────────────── > type MethodRecGleam = {tag : int; free_vars : L<Tag,Ty>[[]]; range : Ty; body : > TypedBind[[]]} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ClosureRecGleam > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ClosureRecGleam = {tag : int; free_vars : L<Tag,Ty>[[]]; domain_args : > TyV[[]]; range : Ty; body : TypedBind[[]]} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### codegenGleam > > ── fsharp ────────────────────────────────────────────────────────────────────── > let codegenGleam (env : PartEvalResult) (x : TypedBind [[]]) = > let types = ResizeArray() > let functions = ResizeArray() > > let print is_type show r = > let s = {text=System.Text.StringBuilder(); indent=0} > show s r > let text = s.text.ToString() > if is_type then types.Add(text) else functions.Add(text) > > let layout show = > let dict' = Dictionary(HashIdentity.Structural) > let dict = Dictionary(HashIdentity.Reference) > let f x : LayoutRecGleam = > match x with > | YLayout(x,_) -> > let x = env.ty_to_data x > let a, b = > match x with > | DRecord a -> let a = Map.map (fun _ -> data_free_vars) a in a > |> Map.toArray |> Array.collect snd, a > | _ -> data_free_vars x, Map.empty > {data=x; free_vars=a; free_vars_by_key=b; tag=dict'.Count} > | _ -> raise_codegen_error $"Compiler error: Expected a layout type > (3).\nGot: %s{show_ty x}" > fun x -> > let mutable dirty = false > let r = memoize dict (memoize dict' (fun x -> dirty <- true; f x)) x > if dirty then print true show r > r > > let union show = > let dict = Dictionary(HashIdentity.Reference) > let f (a : Map<int * string,Ty>) : UnionRecGleam = {free_vars=a |> > Map.map (fun _ -> env.ty_to_data >> data_free_vars); tag=dict.Count} > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print true show r > r > > let jp f show = > let dict = Dictionary(HashIdentity.Structural) > let f x = f (x, dict.Count) > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print false show r > r > > let args x = x |> Array.map (fun (L(i,_)) -> sprintf "v%i" i) |> > String.concat ", " > let show_w = function WV (L(i,_)) -> sprintf "v%i" i | WLit a -> litGleam a > > let global' = > let has_added = HashSet env.globals > fun x -> if has_added.Add(x) then env.globals.Add x > > let rec tyv x = > match x with > | YUnion a -> > let a = a.Item > match a.layout with > | UHeap -> sprintf "Uh%i" (uheap a.cases).tag > | UStack -> sprintf "Us%i" (ustack a.cases).tag > | YLayout(_,lay) as a -> > match lay with > | Heap -> sprintf "Heap%i" (heap a).tag > | HeapMutable -> sprintf "Mut%i" (mut a).tag > | StackMutable -> raise_codegen_error "Compiler error: The F# > backend doesn't support stack mutable layout types." > | YMacro [[Text "backend_switch "; Type (YRecord r)]] -> > match r |> Map.tryPick (fun (_, k) v -> if k = backend_nameGleam > then Some v else None) with > | Some x -> tup_ty x > | None -> raise_codegen_error $"In the backend_switch, expected a > record with the '{backend_nameGleam}' field." > | YMacro a -> a |> List.map (function Text a -> a | Type a -> tup_ty a | > TypeLit a -> type_litGleam a) |> String.concat "" > | YPrim a -> primGleam a > | YArray a -> > global' "import gary" > sprintf "gary.ErlangArray(%s)" (tup_ty a) > | YFun(a,b,FT_Vanilla) -> sprintf "fn(%s) -> %s" (tup_ty a) (tup_ty b) > | YExists -> raise_codegen_error "Existentials are not supported at > runtime. They are a compile time feature only." > | YForall -> raise_codegen_error "Foralls are not supported at runtime. > They are a compile time feature only." > | a -> raise_codegen_error $"Type not supported in the codegen.\nGot: > %A{a}" > and args_tys x = x |> Array.map (fun (L(i,t)) -> sprintf "v%i : %s" i > (tup_ty t)) |> String.concat ", " > and binds (s : CodegenEnv) (x : TypedBind [[]]) = > Array.iter (function > | TyLet(d,trace,a) -> try op s (Some d) a with :? CodegenError as e > -> raise_codegen_error' trace (e.Data0,e.Data1) > | TyLocalReturnOp(trace,a,_) -> try op s None a with :? CodegenError > as e -> raise_codegen_error' trace (e.Data0,e.Data1) > | TyLocalReturnData(d,trace) -> try line s (tup d) with :? > CodegenError as e -> raise_codegen_error' trace (e.Data0,e.Data1) > ) x > and tup x = > match data_term_vars x with > | [[||]] -> "Nil " > | [[|x|]] -> show_w x > | x -> Array.map show_w x |> String.concat ", " |> sprintf "#(%s) " > and tup_ty x = > match env.ty_to_data x |> data_free_vars |> Array.map (fun (L(_,x)) -> > tyv x) with > | [[||]] -> "Nil " > | [[|x|]] -> x > | x -> String.concat ", " x |> sprintf "#(%s) " > and op s d a = > let jp (a, b) = > let args = args b > match a with > | JPMethod(a,b) -> sprintf "method%i(%s)" (method (a,b)).tag args > | JPClosure(a,b) -> > let code = > [[ > "closure" > (a, b) |> closure |> _.tag |> string > "(" > if args = "" then "" else $")(#({args})" > ")" > if args = "" || args |> SpiralSm.contains ", " then "" > else "(Nil)" > ]] > |> SpiralSm.concat "" > if args = "" then > // trace Verbose (fun () -> $"""CodegenGleam.codegenGleam / > """) _locals > $"fn (x) {{ {code}(#(x))( Nil) }}" > else code > let free_vars do_annot x = > let f (L(i,t)) = if do_annot then sprintf "v%i : %s" i (tyv t) else > sprintf "v%i" i > match data_free_vars x with > | [[||]] -> "Nil " > | [[|x|]] -> f x > | x -> Array.map f x |> String.concat ", " |> sprintf "#(%s) " > let simple x = > match d with > | None -> x > | Some d -> > match free_vars false d |> SpiralSm.trim with > | "Nil" -> x > | d -> sprintf "let %s = %s" d x > |> line s > let complex f = > match d with > | None -> f s : unit > | Some d -> > match free_vars false d |> SpiralSm.trim with > | "Nil" -> f s > | d -> > line s (sprintf "let %s =" d) > f (indent s) > let layout_vars a = > let f i x = > match x with > | WV(L(i',_)) -> sprintf "l%i : v%i" i i' > | WLit x -> sprintf "l%i : %s" i (litGleam x) > a |> data_term_vars |> Array.mapi f |> String.concat ", " > let layout_index i x = > x |> Array.map (fun (L(i',_)) -> sprintf "v%i.l%i " i i') > |> String.concat ", " > |> function "" -> () | x -> simple x > let length (a,b) = > global' "import gleam/string" > sprintf "string.length(%s)" (tup b) > |> simple > match a with > | TyMacro a -> a |> List.map (function CMText x -> x | CMTerm x -> tup x > | CMType x -> tup_ty x | CMTypeLit x -> type_litGleam x) |> String.concat "" |> > simple > | TySizeOf t -> simple $"0" > | TyIf(cond,tr,fl) -> > complex <| fun s -> > // line s (sprintf "if %s then" (tup cond)) > line s (sprintf "case %s {" (tup cond)) > line (indent s) "True -> {" > binds (indent (indent s)) tr > line (indent s) "}" > line (indent s) "False -> {" > match fl with > | [[|TyLocalReturnData(DB,_)|]] -> > line (indent s) "Nil" > | _ -> > binds (indent (indent s)) fl > line (indent s) "}" > line s "}" > | TyJoinPoint(a,args) -> simple (jp (a, args)) > | TyBackend(_,_,r) -> raise_codegen_error_backend r "The Gleam backend > does not support nesting other backends." > | TyWhile(a,b) -> > complex <| fun s -> > line s (sprintf "while %s {" (jp a)) > binds (indent s) b > line s "}" > | TyDo a -> > complex <| fun s -> > line s "{" > binds (indent s) a > line s "}" > | TyIndent a -> > complex <| fun s -> > binds (indent s) a > | TyIntSwitch(L(i,_),on_succ,on_fail) -> > complex <| fun s -> > line s (sprintf "case v%i {" i) > Array.iteri (fun i x -> > line (indent s) (sprintf "%i -> {" i) > binds (indent (indent s)) x > line (indent s) "}" > ) on_succ > line (indent s) "_ -> {" > binds (indent (indent s)) on_fail > line (indent s) "}" > | TyUnionUnbox(is,x,on_succs,on_fail) -> > complex <| fun s -> > let case_tags = x.Item.tags > line s (sprintf "case %s {" (is |> List.map (fun (L(i,_)) -> > $"v{i}") |> String.concat ", ")) > let prefix = > let x = x.Item > match x.layout with > | UHeap -> sprintf "Uh%i" (uheap x.cases).tag > | UStack -> sprintf "Us%i" (ustack x.cases).tag > Map.iter (fun k (a,b) -> > let i = case_tags.[[k]] > let cases = > a |> List.map (fun a -> > match data_free_vars a with > | [[||]] -> "" > | x -> sprintf "(%s)" (args x) > |> sprintf "%si%i%s" prefix i > ) > |> String.concat ", " > line (indent s) (sprintf "%s -> { // %s" cases k) > binds (indent (indent s)) b > line (indent s) "}" > ) on_succs > on_fail |> Option.iter (fun b -> > line (indent s) "_ -> {" > binds (indent (indent s)) b > line (indent s) "}" > ) > line s "}" > | TyUnionBox(a,b,c) -> > let c = c.Item > let i = c.tags.[[a]] > let vars = > match data_term_vars b with > | [[||]] -> "" > | x -> Array.map show_w x |> String.concat ", " |> sprintf > "(%s)" > match c.layout with > | UHeap -> sprintf "Uh%ii%i%s" (uheap c.cases).tag i vars > | UStack -> sprintf "Us%ii%i%s" (ustack c.cases).tag i vars > |> simple > | TyToLayout(a,b) -> > let a = layout_vars a > match b with > | YLayout(_,layout) -> > match layout with > | Heap -> if a = "" then sprintf "Heap%i()" (heap b).tag else > sprintf "Heap%i(%s)" (heap b).tag a > | HeapMutable -> if a = "" then sprintf "Mut%i()" (mut b).tag > else sprintf "Mut%i(%s)" (mut b).tag a > | StackMutable -> raise_codegen_error "The F# backend doesn't > support stack mutable layout types." > | _ -> raise_codegen_error $"Compiler error: Expected a layout type > (4).\nGot: %s{show_ty b}" > |> simple > | TyLayoutIndexAll(L(i,YLayout(_,lay) & a)) -> > match lay with > | Heap -> heap a > | HeapMutable -> mut a > | StackMutable -> raise_codegen_error "The F# backend doesn't > support indexing into stack mutable layout types." > |> fun x -> x.free_vars |> layout_index i > | TyLayoutIndexByKey(L(i,YLayout(_,lay) & a),key) -> > match lay with > | Heap -> heap a > | HeapMutable -> mut a > | StackMutable -> raise_codegen_error "The F# backend doesn't > support indexing into stack mutable layout types." > |> fun x -> > x.free_vars_by_key > |> Map.tryPick (fun (_, k) v -> if k = key then Some v else > None) > |> Option.iter (layout_index i) > | TyLayoutIndexAll _ | TyLayoutIndexByKey _ -> raise_codegen_error > "Compiler error: Expected the TyV in layout index to be a layout type." > | TyLayoutMutableSet(L(i,t),b,c) -> > let a = List.fold (fun s k -> > match s with > | DRecord l -> l |> Map.pick (fun (_,k') v -> if k' = k then > Some v else None) > | _ -> raise_codegen_error "Compiler error: Expected a record.") > (mut t).data b > let a_vars = data_free_vars a > Array.iter2 (fun (L(i',_)) b -> > if a_vars |> Array.length > 1 > then line s (sprintf "let v%i = %s(..v%i, l%i: %s)" i (tup_ty t) > i i' (show_w b)) > else line s (sprintf "let v%i = %s(l%i: %s)" i (tup_ty t) i' > (show_w b)) > ) a_vars (data_term_vars c) > | TyArrayLiteral(a,b) -> simple <| sprintf "[[ %s ]]" (List.map tup b |> > String.concat ", ") > | TyArrayCreate(a,b) -> simple "[[]]" > | TyArrayLength(a,b) -> length (a,b) > | TyStringLength(a,b) -> length (a,b) > | TyFailwith(a,b) -> simple (sprintf "panic as %s" (tup b)) > | TyConv(a,b) -> > let b = tup b > match a with > | YPrim Int8T -> $"{b}" > | YPrim Int16T -> $"{b}" > | YPrim Int32T -> $"{b}" > | YPrim Int64T -> $"{b}" > | YPrim UInt8T -> $"{b}" > | YPrim UInt16T -> $"{b}" > | YPrim UInt32T -> $"{b}" > | YPrim UInt64T -> $"{b}" > | YPrim Float32T -> $"{b}" > | YPrim Float64T -> $"{b}" > | _ -> raise_codegen_error $"Compiler error: Unexpected type in > Conv. Got: {show_ty a}" > |> simple > | TyApply(L(i,t),b) -> > match tup b with > | "Nil " when tup_ty t |> SpiralSm.starts_with "fn(Nil ) -> " -> > $"v{i}(Nil ) " > | "Nil " -> $"v{i} " > | b' -> $"v{i}({b'})" > |> simple > | TyOp(Global, [[DLit (LitString x)]]) -> global' x > | TyOp(op,l) -> > match op, l with > | Dyn,[[a]] -> tup a > | TypeToVar, _ -> raise_codegen_error "The use of `` should never > appear in generated code." > | StringIndex, [[a;b]] -> > global' "import gleam/string" > sprintf "%s |> string.slice(%s, 1)" (tup a) (tup b) > | StringSlice, [[a;b;c]] -> > global' "import gleam/string" > sprintf "%s |> string.slice(%s, %s)" (tup a) (tup b) (tup c) > | ArrayIndex, [[a;b]] -> > global' "import gary/array" > global' "import gleam/result" > sprintf "%s |> array.get(%s) |> result.unwrap" (tup a) (tup b) > | ArrayIndexSet, [[a;b;c]] -> > global' "import gary/array" > global' "import gleam/result" > sprintf "%s |> array.set(%s, %s) |> result.unwrap" (tup a) (tup > b) (tup c) > > // Math > | Add, [[a;b]] -> sprintf "%s + %s" (tup a) (tup b) > | Sub, [[a;b]] -> sprintf "%s - %s" (tup a) (tup b) > | Mult, [[a;b]] -> sprintf "%s * %s" (tup a) (tup b) > | Div, [[a;b]] -> sprintf "%s / %s" (tup a) (tup b) > | Mod, [[a;b]] -> sprintf "%s %% %s" (tup a) (tup b) > | Pow, [[a;b]] -> sprintf "%s ** %s" (tup a) (tup b) > | LT, [[a;b]] -> sprintf "%s < %s" (tup a) (tup b) > | LTE, [[a;b]] -> sprintf "%s <= %s" (tup a) (tup b) > | EQ, [[a;b]] -> sprintf "%s == %s" (tup a) (tup b) > | NEQ, [[a;b]] -> sprintf "%s != %s" (tup a) (tup b) > | GT, [[a;b]] -> sprintf "%s > %s" (tup a) (tup b) > | GTE, [[a;b]] -> sprintf "%s >= %s" (tup a) (tup b) > | BoolAnd, [[a;b]] -> sprintf "%s && %s" (tup a) (tup b) > | BoolOr, [[a;b]] -> sprintf "%s || %s" (tup a) (tup b) > | BitwiseAnd, [[a;b]] -> sprintf "%s &&& %s" (tup a) (tup b) > | BitwiseOr, [[a;b]] -> sprintf "%s ||| %s" (tup a) (tup b) > | BitwiseXor, [[a;b]] -> sprintf "%s ^^^ %s" (tup a) (tup b) > | BitwiseComplement, [[a]] -> sprintf "~~~%s" (tup a) > > | ShiftLeft, [[a;b]] -> sprintf "%s <<< %s" (tup a) (tup b) > | ShiftRight, [[a;b]] -> sprintf "%s >>> %s" (tup a) (tup b) > > | Neg, [[x]] -> sprintf " -%s" (tup x) > | Log, [[x]] -> sprintf "log %s" (tup x) > | Exp, [[x]] -> sprintf "exp %s" (tup x) > | Tanh, [[x]] -> sprintf "tanh %s" (tup x) > | Sqrt, [[x]] -> sprintf "sqrt %s" (tup x) > | Sin, [[x]] -> sprintf "sin %s" (tup x) > | Cos, [[x]] -> sprintf "cos %s" (tup x) > | NanIs, [[x]] -> > match x with > | DLit(LitFloat32 _) | DV(L(_,YPrim Float32T)) -> sprintf > "System.Single.IsNaN(%s)" (tup x) > | DLit(LitFloat64 _) | DV(L(_,YPrim Float64T)) -> sprintf > "System.Double.IsNaN(%s)" (tup x) > | _ -> raise_codegen_error "Compiler error: Invalid type in > NanIs." > | UnionTag, [[DV(L(i,YUnion h))]] -> > let h = h.Item > let ty = > match h.layout with > | UHeap -> sprintf "Uh%i" (uheap h.cases).tag > | UStack -> sprintf "Us%i" (ustack h.cases).tag > let items = > h.cases > |> Seq.map (fun (KeyValue ((i, _), _)) -> > $"#({ty}i{i}, {i})" > ) > |> String.concat ", " > global' "import gleam/dict" > global' "import gleam/result" > $"[[ {items} ]] |> dict.from_list |> dict.get(v{i}) |> > result.unwrap(0)" > | _ -> raise_codegen_error <| sprintf "Compiler error: %A with %i > args not supported" op l.Length > |> simple > and heap : _ -> LayoutRecGleam = layout (fun s x -> > let b = x.free_vars |> Array.map (fun (L(i,t)) -> sprintf "l%i : %s" i > (tyv t)) |> String.concat ", " > if b = "" then line s (sprintf "Heap%i { Heap%i() }" x.tag x.tag) > else line s (sprintf "Heap%i { Heap%i(%s) }" x.tag x.tag b) > ) > and mut : _ -> LayoutRecGleam = layout (fun s x -> > let b = x.free_vars |> Array.map (fun (L(i,t)) -> sprintf "l%i : %s" i > (tyv t)) |> String.concat ", " > if b = "" then line s (sprintf "Mut%i { Mut%i() }" x.tag x.tag) > else line s (sprintf "Mut%i { Mut%i(%s) }" x.tag x.tag b) > ) > and uheap : _ -> UnionRecGleam = union (fun s x -> > line s (sprintf "Uh%i {" x.tag) > let mutable i = 0 > x.free_vars |> Map.iter (fun _ a -> > match a with > | [[||]] -> line (indent s) (sprintf "Uh%ii%i" x.tag i) > | a -> line (indent s) (sprintf "Uh%ii%i(%s)" x.tag i (a |> > Array.map (fun (L(_,t)) -> tyv t) |> String.concat ", ")) > i <- i+1 > ) > line s "}" > ) > and ustack : _ -> UnionRecGleam = union (fun s x -> > line s (sprintf "Us%i {" x.tag) > let mutable i = 0 > x.free_vars |> Map.iter (fun _ a -> > match a with > | [[||]] -> line (indent s) (sprintf "Us%ii%i" x.tag i) > | a -> line (indent s) (sprintf "Us%ii%i(%s)" x.tag i (a |> > Array.mapi (fun i' (L(_,t)) -> sprintf "f%ii%i : %s" i i' (tyv t)) |> > String.concat ", ")) > i <- i+1 > ) > line s "}" > ) > and method : _ -> MethodRecGleam = > jp (fun ((jp_body,key & (C(args,_))),i) -> > match (fst env.join_point_method.[[jp_body]]).[[key]] with > | Some a, Some range, _ -> {tag=i; free_vars=rdata_free_vars args; > range=range; body=a} > | _ -> raise_codegen_error "Compiler error: The method dictionary is > malformed" > ) (fun s x -> > let range_ty = tup_ty x.range > let is_fn = range_ty |> SpiralSm.starts_with "fn(Nil ) -> " > let ret = > if is_fn > then $"{range_ty} {{ fn(_)" > else range_ty > line s (sprintf "method%i (%s) -> %s {" x.tag (args_tys x.free_vars) > ret) > binds (indent s) x.body > if is_fn > then line s "}}" > else line s "}" > ) > and closure : _ -> ClosureRecGleam = > jp (fun ((jp_body,key & (C(args,_,fun_ty))),i) -> > match fun_ty with > | YFun(domain,range,FT_Vanilla) -> > match (fst env.join_point_closure.[[jp_body]]).[[key]] with > | Some(domain_args, body) -> {tag=i; free_vars=rdata_free_vars > args; domain_args=data_free_vars domain_args; range=range; body=body} > | _ -> raise_codegen_error "Compiler error: The method > dictionary is malformed" > | YFun(_,_,_) -> raise_codegen_error "Non-standard functions are not > supported in the F# backend." > | _ -> raise_codegen_error "Compiler error: Unexpected type in the > closure join point." > ) (fun s x -> > let domain = > let domain_args = > if x.domain_args |> Array.length < 1 then > x.domain_args > |> Array.map (fun (L(i,t)) -> > sprintf "v%i : %s" i (tyv t) > ) > else > let t = > x.domain_args > |> Array.map (fun (L(_,t)) -> $"{tyv t}") > |> String.concat ", " > if x.domain_args |> Array.length > 1 > then [[| $"x : #(#( {t}))" |]] > else [[| $"x : #( {t})" |]] > match domain_args with > | [[||]] -> "" > | [[|x|]] -> x > | x -> String.concat ", " x > let free_vars_tys = > if x.domain_args |> Array.length < 1 then > let t = > x.free_vars > |> Array.map (fun (L(_,t)) -> tup_ty t) > |> String.concat ", " > $"x : #( {t})" > else args_tys x.free_vars > let args = > [[| free_vars_tys; domain |]] > |> Array.filter ((<>) "") > |> String.concat ", " > let args' = > if x.domain_args |> Array.length < 0 then > "" > else > let args = > (if x.domain_args |> Array.isEmpty then x.free_vars else > x.domain_args) > |> Array.map (fun (L(i,_)) -> $"v{i}") > |> String.concat ", " > if x.domain_args |> Array.length > 1 > then $"let #(#( {args})) = x" > else $"let #( {args}) = x" > // line s (sprintf "closure%i () -> fn(_) -> %s { fn(%s) { %s" x.tag > (tup_ty x.range) args args') > line s (sprintf "closure%i () -> fn(_) -> fn(Nil) -> %s { fn(%s) { > %s\nfn (_) {" x.tag (tup_ty x.range) args args') > binds (indent s) x.body > line s "}}}" > ) > > let main = System.Text.StringBuilder() > binds {text=main; indent=0} x > > let program = System.Text.StringBuilder() > env.globals |> Seq.iter (fun (x : string) -> program.AppendLine(x) |> > ignore) > types |> Seq.iteri (fun i x -> program.Append("pub type ").Append(x) |> > ignore) > functions |> Seq.iteri (fun i x -> program.Append("pub fn ").Append(x) |> > ignore) > program.Append($"pub fn main () {{ {main} }}").ToString() > > ── fsharp ────────────────────────────────────────────────────────────────────── > ── [ 3.16s - diagnostics ] ───────────────────────────────────────────────────── > │ input.fsx (374,81)-(374,84) typecheck warning This and other > recursive references to the object(s) being defined will be checked for > initialization-soundness at runtime through the use of a delayed reference. This > is because you are defining one or more recursive objects, rather than recursive > functions. This warning may be suppressed by using '#nowarn "40"' or > '--nowarn:40'. > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## RefCounting > > ── fsharp ────────────────────────────────────────────────────────────────────── > // Here are the reference counting analysis passes. > open System.Collections.Generic > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### varc_add > > ── fsharp ────────────────────────────────────────────────────────────────────── > let varc_add x i v = > let c = Option.defaultValue 0 (Map.tryFind x v) + i > if c = 0 then Map.remove x v else Map.add x c v > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### varc_union > > ── fsharp ────────────────────────────────────────────────────────────────────── > let varc_union a b = Map.foldBack varc_add a b > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### varc_data > > ── fsharp ────────────────────────────────────────────────────────────────────── > let varc_data call_data = > let mutable v = Map.empty > let rec f = function > | DPair(a,b) -> f a; f b > | DForall(_,a,_,_,_) | DFunction(_,_,a,_,_,_) -> Array.iter f a > | DRecord l -> Map.iter (fun _ -> f) l > | DV x -> v <- varc_add x 1 v > | DExists(_,a) | DUnion(a,_) | DNominal(a,_) -> f a > | DLit _ | DTLit _ | DSymbol _ | DB -> () > | DHashSet x -> Seq.iter f x > | DHashMap(x,_) -> x |> Seq.iter (fun kv -> f kv.Value) > f call_data > v > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### varc_set > > ── fsharp ────────────────────────────────────────────────────────────────────── > let varc_set x i = Set.fold (fun s v -> Map.add v i s) Map.empty x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### refc_used_vars > > ── fsharp ────────────────────────────────────────────────────────────────────── > let refc_used_vars (x : TypedBind [[]]) = > let g_bind : Dictionary<TypedBind, TyV Set> = > Dictionary(HashIdentity.Reference) > let fv x = x |> data_free_vars |> Set > let jp (x : JoinPointCall) = snd x |> Set > let rec binds x = > Array.foldBack (fun k vs -> > match k with > | TyLet(d,_,o) -> vs + op o - fv d > | TyLocalReturnOp(_,o,_) -> vs + op o > | TyLocalReturnData(d,_) -> vs + fv d > |> fun vs -> g_bind.Add(k,vs); vs > ) x Set.empty > and op (x : TypedOp) : TyV Set = > match x with > | TySizeOf _ -> Set.empty > | TyMacro l -> List.fold (fun s -> function CMTerm d -> s + fv d | _ -> > s) Set.empty l > | TyArrayLiteral(_,l) | TyOp(_,l) -> List.fold (fun s x -> s + fv x) > Set.empty l > | TyToLayout(x,_) | TyUnionBox(_,x,_) | TyFailwith(_,x) | TyConv(_,x) | > TyArrayCreate(_,x) | TyArrayLength(_,x) | TyStringLength(_,x) -> fv x > | TyWhile(cond,body) -> jp cond + binds body > | TyDo body | TyIndent body -> binds body > | TyLayoutIndexAll(i) | TyLayoutIndexByKey(i,_) -> Set.singleton i > | TyApply(i,d) | TyLayoutMutableSet(i,_,d) -> Set.singleton i + fv d > | TyJoinPoint x -> jp x > | TyBackend(_,_,_) -> Set.empty > | TyIf(cond,tr',fl') -> fv cond + binds tr' + binds fl' > | TyUnionUnbox(vs,_,on_succs',on_fail') -> > let vs = vs |> Set > let on_fail = > match on_fail' with > | Some x -> binds x > | None -> Set.empty > Map.fold (fun s k (lets,body) -> > let lets = List.fold (fun s x -> s + fv x) Set.empty lets > s + (binds body - lets) > ) (vs + on_fail) on_succs' > | TyIntSwitch(tag,on_succs',on_fail') -> > let vs = Set.singleton tag > let on_fail = binds on_fail' > Array.fold (fun s body -> s + binds body) (vs + on_fail) on_succs' > binds x |> ignore > g_bind > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### RefcVars > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RefcVars = {g_incr : Dictionary<TypedBind,TyV Set>; g_decr : > Dictionary<TypedBind,TyV Set>; g_op : Dictionary<TypedBind,Map<TyV, int>>; > g_op_decr : Dictionary<TypedBind,TyV Set>} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### refc_prepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let refc_prepass (new_vars : TyV Set) (increfed_vars : TyV Set) (x : TypedBind > [[]]) = > let used_vars = refc_used_vars x > let g_incr : Dictionary<TypedBind, TyV Set> = > Dictionary(HashIdentity.Reference) > let g_decr : Dictionary<TypedBind, TyV Set> = > Dictionary(HashIdentity.Reference) > let g_op : Dictionary<TypedBind, _> = Dictionary(HashIdentity.Reference) > let g_op_decr : Dictionary<TypedBind, TyV Set> = > Dictionary(HashIdentity.Reference) > > let add (d : Dictionary<TypedBind, TyV Set>) k x = if Set.isEmpty x then () > else d.Add(k,x) > let add' (d : Dictionary<TypedBind, Map<TyV,int>>) k x = if Map.isEmpty x > then () else d.Add(k,x) > let fv x = x |> data_free_vars |> Set > let rec binds (new_vars : TyV Set) (increfed_vars : TyV Set) (k : TypedBind > [[]]) = > Array.fold (fun (new_vars, increfed_vars) k -> > add g_incr k new_vars > let increfed_vars = new_vars + increfed_vars > > let used_vars = used_vars.[[k]] > let decref_vars = increfed_vars - used_vars > add g_decr k decref_vars > let r = increfed_vars - decref_vars > match k with > | TyLet(d,_,o) -> > op k Set.empty o > let new_vars = fv d > match o with > | TyLayoutIndexAll _ | TyLayoutIndexByKey _ | TyOp(ArrayIndex,_) > -> new_vars, r > | _ -> Set.empty, r + new_vars > | TyLocalReturnOp(_,o,_) -> > op k r o > Set.empty, r > | TyLocalReturnData(d,_) -> > add' g_op k (varc_data d) > add g_op_decr k r > Set.empty, r > ) (new_vars, increfed_vars) k > |> ignore > and op k increfed_vars (x : TypedOp) : unit = > let fun_call q = add' g_op k q; add g_op_decr k increfed_vars > match x with > | TyApply(a,b) -> varc_add a 1 (varc_data b) |> fun_call > | TyJoinPoint(_,x) -> Array.fold (fun s x -> varc_add x 1 s) Map.empty x > |> fun_call > | TyArrayLiteral(_,x) -> List.fold (fun s x -> varc_union s (varc_data > x)) Map.empty x |> fun_call > | TyUnionBox(_,x,_) | TyToLayout(x,_) -> varc_data x |> fun_call > | TySizeOf _ | TyLayoutIndexAll _ | TyLayoutIndexByKey _ | TyMacro _ | > TyOp _ | TyFailwith _ | TyConv _ > | TyArrayCreate _ | TyArrayLength _ | TyStringLength _ | > TyLayoutMutableSet _ | TyBackend _ -> () > | TyWhile(_,body) -> binds Set.empty Set.empty body > | TyDo body | TyIndent body -> binds Set.empty Set.empty body > | TyIf(_,tr',fl') -> binds Set.empty increfed_vars tr'; binds Set.empty > increfed_vars fl' > | TyUnionUnbox(_,_,on_succs',on_fail') -> > Map.iter (fun _ (lets,body) -> > binds (List.fold (fun s x -> s + fv x) Set.empty lets) > increfed_vars body > ) on_succs' > Option.iter (binds Set.empty increfed_vars) on_fail' > | TyIntSwitch(_,on_succs',on_fail') -> > Array.iter (binds Set.empty increfed_vars) on_succs' > binds Set.empty increfed_vars on_fail' > binds new_vars increfed_vars x > > {g_incr=g_incr; g_op=g_op; g_decr=g_decr; g_op_decr=g_op_decr} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## CodegenC > > ── fsharp ────────────────────────────────────────────────────────────────────── > module CodegenC = > // open System > // open System.Text > open System.Collections.Generic > > let sizeof_tyvC = function > | YPrim (Int64T | UInt64T | Float64T) -> 8 > | YPrim (Int32T | UInt32T | Float32T) -> 4 > | YPrim (Int16T | UInt16T) -> 2 > | YPrim (Int8T | UInt8T | CharT | BoolT) -> 1 > | _ -> 8 > let order_argsC v = v |> Array.sortWith (fun (L(_,t)) (L(_,t')) -> compare > (sizeof_tyvC t') (sizeof_tyvC t)) > let lineC x s = if s <> "" then x.text.Append(' ', x.indent).AppendLine s |> > ignore > let line' x s = line x (String.concat " " s) > > let rec is_heap f x = > Array.exists (fun (L(i,t)) -> > match t with > | YUnion a when a.Item.layout = UStack -> Array.exists (snd >> f >> > is_heap f) a.Item.tag_cases > | YPrim StringT -> true > | YPrim _ -> false > | _ -> true > ) x > let is_stringC = function DV(L(_,YPrim StringT)) | DLit(LitString _) -> true > | _ -> false > > type BindsReturnC = > | BindsTailEnd > | BindsLocal of TyV [[]] > > let term_vars_to_tysC x = x |> Array.map (function WV(L(_,t)) -> t | WLit x > -> YPrim (lit_to_primitive_type x)) > let binds_last_dataC x = x |> Array.last |> function TyLocalReturnData(x,_) > | TyLocalReturnOp(_,_,x) -> x | TyLet _ -> raise_codegen_error "Compiler error: > Cannot find the return data of the last bind." > > type UnionRecC = {tag : int; free_vars : Map<int * string, TyV[[]]>} > type LayoutRecC = {tag : int; data : Data; free_vars : TyV[[]]; > free_vars_by_key : Map<int * string, TyV[[]]>} > type MethodRecC = {tag : int; free_vars : L<Tag,Ty>[[]]; range : Ty; body : > TypedBind[[]]; name : string option} > type ClosureRecC = {tag : int; free_vars : L<Tag,Ty>[[]]; domain : Ty; > domain_args : TyV[[]]; range : Ty; body : TypedBind[[]]} > type TupleRecC = {tag : int; tys : Ty [[]]} > type ArrayRecC = {tag : int; ty : Ty; tyvs : TyV[[]]} > type CFunRecC = {tag : int; domain_args_ty : Ty[[]]; range : Ty} > > let size_t = UInt32T > > let lit_stringC x = > let strb = System.Text.StringBuilder(String.length x + 2) > strb.Append '"' |> ignore > String.iter (function > | '"' -> strb.Append "\\\"" > | '\b' -> strb.Append @"\b" > | '\t' -> strb.Append @"\t" > | '\n' -> strb.Append @"\n" > | '\r' -> strb.Append @"\r" > | '\\' -> strb.Append @"\\" > | x -> strb.Append x > >> ignore > ) x > strb.Append '"' |> ignore > strb.ToString() > > let codegenC (env : PartEvalResult) (x : TypedBind [[]]) = > let globals = ResizeArray() > let fwd_dcls = ResizeArray() > let types = ResizeArray() > let functions = ResizeArray() > > let malloc, free = "malloc", "free" > > let print_decref s_fun name_fun type_arg name_decref = > line s_fun (sprintf "void %s(%s * x){" name_fun type_arg) > let _ = > let s_fun = indent s_fun > line s_fun (sprintf "if (x != NULL && --(x->refc) == 0) { %s(x); > %s(x); }" name_decref free) > line s_fun "}" > > let print show r = > let s_typ_fwd = {text=System.Text.StringBuilder(); indent=0} > let s_typ = {text=System.Text.StringBuilder(); indent=0} > let s_fun = {text=System.Text.StringBuilder(); indent=0} > show s_typ_fwd s_typ s_fun r > let f (a : _ ResizeArray) (b : CodegenEnv) = > let text = b.text.ToString() > if text <> "" then a.Add(text) > f fwd_dcls s_typ_fwd > f types s_typ > f functions s_fun > > let layout show = > let dict' = Dictionary(HashIdentity.Structural) > let dict = Dictionary(HashIdentity.Reference) > let f x : LayoutRecC = > match x with > | YLayout(x,_) -> > let x = env.ty_to_data x > let a, b = > match x with > | DRecord a -> let a = Map.map (fun _ -> data_free_vars) > a in a |> Map.toArray |> Array.collect snd, a > | _ -> data_free_vars x, Map.empty > {data=x; free_vars=a; free_vars_by_key=b; tag=dict'.Count} > | _ -> raise_codegen_error $"Compiler error: Expected a layout > type (7).\nGot: %s{show_ty x}" > fun x -> > let mutable dirty = false > let r = memoize dict (memoize dict' (fun x -> dirty <- true; f > x)) x > if dirty then print show r > r > > let union show = > let dict = Dictionary(HashIdentity.Reference) > let f (a : Union) : UnionRecC = > let free_vars = a.Item.cases |> Map.map (fun _ -> env.ty_to_data > >> data_free_vars) > {free_vars=free_vars; tag=dict.Count} > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print show r > r > > let jp f show = > let dict = Dictionary(HashIdentity.Structural) > let f x = f (x, dict.Count) > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print show r > r > > let tuple show = > let dict = Dictionary(HashIdentity.Structural) > let f x = {tag=dict.Count; tys=x} > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print show r > r > > let carray' show = > let dict = Dictionary(HashIdentity.Structural) > let f x = {tag=dict.Count; ty=x; tyvs = env.ty_to_data x |> > data_free_vars} > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print show r > r > > let cstring' show = > let mutable dirty = true > fun () -> > if dirty then print show () > dirty <- false > > let cfun' show = > let dict = Dictionary(HashIdentity.Structural) > let f (a : Ty, b : Ty) = {tag=dict.Count; domain_args_ty=a |> > env.ty_to_data |> data_free_vars |> Array.map (fun (L(_,t)) -> t); range=b} > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print show r > r > > let args x = x |> Array.map (fun (L(i,_)) -> sprintf "v%i" i) |> > String.concat ", " > > let tmp = > let mutable i = 0u > fun () -> let x = i in i <- i + 1u; x > > let global' = > let has_added = HashSet() > fun x -> if has_added.Add(x) then globals.Add x > > let import x = global' $"#include <{x}>" > let import' x = global' $"#include \"{x}\"" > > let tyvs_to_tys (x : TyV [[]]) = Array.map (fun (L(i,t)) -> t) x > > let rec binds_start (args : TyV [[]]) (s : CodegenEnv) (x : TypedBind > [[]]) = binds (refc_prepass Set.empty (Set args) x) s BindsTailEnd x > and return_local s ret (x : string) = > match ret with > | [[||]] -> line s $"{x};" > | [[|L(i,_)|]] -> line s $"v{i} = {x};" > | ret -> > let tmp_i = tmp() > line s $"{tup_ty_tyvs ret} tmp{tmp_i} = {x};" > Array.mapi (fun i (L(i',_)) -> $"v{i'} = tmp{tmp_i}.v{i};") ret > |> line' s > and binds (vars : RefcVars) (s : CodegenEnv) (ret : BindsReturnC) (stmts > : TypedBind [[]]) = > let tup_destruct (a,b) = > Array.map2 (fun (L(i,_)) b -> > match b with > | WLit b -> $"v{i} = {lit b};" > | WV (L(i',_)) -> $"v{i} = v{i'};" > ) a b > Array.iter (fun x -> > // This complicated looking piece of code is responsible for > putting the incref and decref statements at the beginning of every > // statement. It's actually the only place where ref counting > code is outputted in the codegen. > let _ = > let f k = get_default k x (fun () -> Set.empty) > let f' k = get_default k x (fun () -> Map.empty) > let incr, decr, op, op_decr = varc_set (f vars.g_incr) 1, > varc_set (f vars.g_decr) -1, f' vars.g_op, varc_set (f vars.g_op_decr) -1 > let incr, decr = varc_union incr decr |> varc_union op |> > varc_union op_decr |> Map.partition (fun _ v -> 0 < v) > refc_varc incr |> line' s; refc_varc decr |> line' s > match x with > | TyLet(d,trace,a) -> > try let d = data_free_vars d > let decl_vars = Array.map (fun (L(i,t)) -> $"{tyv t} > v{i};") d > match a with > | TyMacro a -> > let m = a |> List.map (function CMText x -> x | > CMTerm x -> tup_data x | CMType x -> tup_ty x | CMTypeLit x -> type_lit x) |> > String.concat "" > let q = m.Split("\\v") > if q.Length = 1 then > decl_vars |> line' s > return_local s d m > else > if d.Length = q.Length-1 then > let w = > System.Text.StringBuilder(m.Length+8) > let tag (L(i,_)) = i : int > Array.iteri (fun i v -> > w.Append(q.[[i]]).Append('v').Append(tag v) |> ignore) d > > w.Append(q.[[d.Length]]).Append(';').ToString() |> line s > else > raise_codegen_error "The special \\v macro > requires the same number of free vars in its binding as there are \\v in the > code." > | _ -> > decl_vars |> line' s > op vars s (BindsLocal d) a > with :? CodegenError as e -> raise_codegen_error' trace > (e.Data0, e.Data1) > | TyLocalReturnOp(trace,a,_) -> > try op vars s ret a > with :? CodegenError as e -> raise_codegen_error' trace > (e.Data0, e.Data1) > | TyLocalReturnData(d,trace) -> > try match ret with > | BindsLocal l -> line' s (tup_destruct > (l,data_term_vars d)) > | BindsTailEnd -> line s $"return {tup_data d};" > with :? CodegenError as e -> raise_codegen_error' trace > (e.Data0, e.Data1) > ) stmts > and refc_change'' (f : int * Ty -> string) count (L(i,t')) = > let v = i,t' > let inline g decref = > if count = -1 then Some (decref()) > elif count = 1 then Some $"{f v}->refc++;" > elif 1 < count then Some $"{f v}->refc += {count};" > else raise_codegen_error $"Compiler error: Invalid count in > refc_change''. Got: {count}" > match t' with > | YUnion t -> > match t.Item.layout with > | UStack -> > if count = -1 then Some $"USDecref{(ustack t).tag}(&({f > v}));" > elif 0 < count then Some (String.replicate count > $"USIncref{(ustack t).tag}(&({f v}));") > else raise_codegen_error $"Compiler error: Invalid count in > refc_change''. UStack case. Got: {count}" > | UHeap -> g (fun () -> $"UHDecref{(uheap t).tag}({f v});") > | YArray t -> g (fun () -> $"ArrayDecref{(carray t).tag}({f v});") > | YFun(a,b,FT_Vanilla) -> g (fun () -> $"{f v}->decref_fptr({f > v});") > | YPrim StringT -> g (fun () -> $"StringDecref({f v});" ) > | YLayout(_,Heap) as a -> g (fun () -> $"HeapDecref{(heap > a).tag}({f v});") > | YLayout(_,HeapMutable) as a -> g (fun () -> $"MutDecref{(mut > a).tag}({f v});") > | _ -> None > and refc_change' (f : int * Ty -> string) count (x : TyV [[]]) : string > [[]] = Array.choose (refc_change'' f count) x > and refc_change f c x = refc_change' (fun (i,t) -> f i) c x > and refc_varc x = > let ar = ResizeArray(Map.count x) > Map.iter (fun k v -> refc_change'' (fun (i,_) -> $"v{i}") v k |> > Option.iter ar.Add) x > ar > //and refc_incr x : string [[]] = refc_change (fun i -> $"v{i}") 1 x > //and refc_decr x : string [[]] = refc_change (fun i -> $"v{i}") -1 x > and show_w = function WV(L(i,_)) -> sprintf "v%i" i | WLit a -> lit a > and args' b = data_term_vars b |> Array.map show_w |> String.concat ", " > and tup_term_vars x = > let args = Array.map show_w x |> String.concat ", " > if 1 < x.Length then sprintf "TupleCreate%i(%s)" (tup > (term_vars_to_tysC x)).tag args else args > and tup_data x = tup_term_vars (data_term_vars x) > and tup_ty_tys = function > | [[||]] -> "void" > | [[|x|]] -> tyv x > | x -> sprintf "Tuple%i" (tup x).tag > and tup_ty_tyvs (x : TyV [[]]) = tup_ty_tys (tyvs_to_tys x) > and tup_ty x = env.ty_to_data x |> data_free_vars |> tup_ty_tyvs > and tyv x = > match x with > | YUnion a -> > match a.Item.layout with > | UStack -> sprintf "US%i" (ustack a).tag > | UHeap -> sprintf "UH%i *" (uheap a).tag > | YLayout(_,lay) as a -> > match lay with > | Heap -> sprintf "Heap%i *" (heap a).tag > | HeapMutable -> sprintf "Mut%i *" (mut a).tag > | StackMutable -> raise_codegen_error "Compiler error: The C > backend doesn't support stack mutable layout types." > | YMacro a -> a |> List.map (function Text a -> a | Type a -> tup_ty > a | TypeLit a -> type_lit a) |> String.concat "" > | YPrim a -> prim a > | YArray a -> sprintf "Array%i *" (carray a).tag > | YFun(a,b,FT_Vanilla) -> sprintf "Fun%i *" (cfun (a,b)).tag > | YExists -> raise_codegen_error "Existentials are not supported at > runtime. They are a compile time feature only." > | YForall -> raise_codegen_error "Foralls are not supported at > runtime. They are a compile time feature only." > | a -> raise_codegen_error (sprintf "Compiler error: Type not > supported in the codegen.\nGot: %A" a) > and prim = function > | Int8T -> "int8_t" > | Int16T -> "int16_t" > | Int32T -> "int32_t" > | Int64T -> "int64_t" > | UInt8T -> "uint8_t" > | UInt16T -> "uint16_t" > | UInt32T -> "uint32_t" > | UInt64T -> "uint64_t" // are defined in stdint.h > | Float32T -> "float" > | Float64T -> "double" > | BoolT -> "bool" // is defined in stdbool.h > | CharT -> "char" > | StringT -> cstring(); "String *" > and lit = function > | LitInt8 x -> sprintf "%i" x > | LitInt16 x -> sprintf "%i" x > | LitInt32 x -> sprintf "%il" x > | LitInt64 x -> sprintf "%ill" x > | LitUInt8 x -> sprintf "%iu" x > | LitUInt16 x -> sprintf "%iu" x > | LitUInt32 x -> sprintf "%iul" x > | LitUInt64 x -> sprintf "%iull" x > | LitFloat32 x -> > if x = infinityf then "HUGE_VALF" // nan/inf macros are defined > in math.h > elif x = -infinityf then "-HUGE_VALF" > elif System.Single.IsNaN x then "NAN" > else x.ToString("R") |> add_dec_point |> sprintf "%sf" > | LitFloat64 x -> > if x = infinity then "HUGE_VAL" > elif x = -infinity then "-HUGE_VAL" > elif System.Double.IsNaN x then "NAN" > else x.ToString("R") |> add_dec_point > | LitString x -> > cstring() > lit_stringC x |> sprintf "StringLit(%i, %s)" (x.Length + 1) > | LitChar x -> > match x with > | '\b' -> @"\b" > | '\n' -> @"\n" > | '\t' -> @"\t" > | '\r' -> @"\r" > | '\\' -> @"\\" > | x -> string x > |> sprintf "'%s'" > | LitBool x -> if x then "true" else "false" // true and false are > defined in stddef.h > and type_lit = function > | YLit x -> lit x > | YSymbol x -> x > | YNominal _ | YApply _ as x -> type_lit (env.nominal_apply x) > | x -> raise_codegen_error "Compiler error: Expecting a type literal > in the macro." > and op (vars : RefcVars) s (ret : BindsReturnC) a = > let binds a b = binds vars a b > let return' (x : string) = > match ret with > | BindsLocal ret -> return_local s ret x > | BindsTailEnd -> line s $"return {x};" > let layout_index (x'_i : int) (x' : TyV [[]]) = > match ret with > | BindsLocal x -> Array.map2 (fun (L(i,_)) (L(i',_)) -> $"v{i} = > v{x'_i}->v{i'};") x x' |> line' s > | BindsTailEnd -> raise_codegen_error "Compiler error: Layout > index should never come in end position." > let jp (a,b') = > let args = args b' > match a with > | JPMethod(a,b) -> > let x = method (a,b) > sprintf "%s%i(%s)" (Option.defaultValue "method" x.name) > x.tag args > | JPClosure(a,b) -> sprintf "ClosureCreate%i(%s)" (closure > (a,b)).tag args > let string_in_op = function DLit (LitString b) -> lit_stringC b | b > -> $"{tup_data b}->ptr" > match a with > | TySizeOf t -> return' $"sizeof({tup_ty t})" > | TyMacro _ -> raise_codegen_error "Macros are supposed to be taken > care of in the `binds` function." > | TyIf(cond,tr,fl) -> > line s (sprintf "if (%s){" (tup_data cond)) > binds (indent s) ret tr > line s "} else {" > binds (indent s) ret fl > line s "}" > | TyJoinPoint(a,args) -> return' (jp (a, args)) > | TyBackend(_,_,r) -> raise_codegen_error_backend r "The C backend > does not support nesting of other backends." > | TyWhile(a,b) -> > let cond = > match a with > | JPMethod(a,b),b' -> sprintf "method_while%i(%s)" > (method_while (a,b)).tag (args b') > | _ -> raise_codegen_error "Expected a regular method rather > than closure create in the while conditional." > line s (sprintf "while (%s){" cond) > binds (indent s) (BindsLocal [[||]]) b > line s "}" > | TyDo a | TyIndent a -> > binds s ret a > | TyIntSwitch(L(v_i,_),on_succ,on_fail) -> > line s (sprintf "switch (v%i) {" v_i) > let _ = > let s = indent s > Array.iteri (fun i x -> > line s (sprintf "case %i: {" i) > binds (indent s) ret x > line (indent s) "break;" > line s "}" > ) on_succ > line s "default: {" > binds (indent s) ret on_fail > line s "}" > line s "}" > | TyUnionUnbox(is,x,on_succs,on_fail) -> > let case_tags = x.Item.tags > let acs = match x.Item.layout with UHeap -> "->" | UStack -> "." > let head = List.head is |> fun (L(i,_)) -> $"v{i}{acs}tag" > List.pairwise is > |> List.map (fun (L(i,_), L(i',_)) -> $"v{i}{acs}tag == > v{i'}{acs}tag") > |> String.concat " && " > |> function "" -> head | x -> $"{x} ? {head} : -1" > |> sprintf "switch (%s) {" |> line s > let _ = > let s = indent s > Map.iter (fun k (a,b) -> > let union_i = case_tags.[[k]] > let decr = get_default vars.g_decr (Array.head b) (fun > () -> Set.empty) > line s (sprintf "case %i: { // %s" union_i k) > List.iter2 (fun (L(data_i,_)) a -> > let a, s = data_free_vars a, indent s > let qs = ResizeArray(a.Length) > Array.iteri (fun field_i (L(v_i,t) as v) -> > if Set.contains v decr = false then qs.Add > $"{tyv t} v{v_i} = v{data_i}{acs}case{union_i}.v{field_i};" > ) a > line' s qs > ) is a > binds (indent s) ret b > line (indent s) "break;" > line s "}" > ) on_succs > on_fail |> Option.iter (fun b -> > line s "default: {" > binds (indent s) ret b > line s "}" > ) > line s "}" > | TyUnionBox(a,b,c') -> > let c = c'.Item > let i = c.tags.[[a]] > let vars = args' b > match c.layout with > | UHeap -> sprintf "UH%i_%i(%s)" (uheap c').tag i vars > | UStack -> sprintf "US%i_%i(%s)" (ustack c').tag i vars > |> return' > | TyToLayout(a,b) -> > match b with > | YLayout(_,layout) -> > match layout with > | Heap -> sprintf "HeapCreate%i(%s)" (heap b).tag (args' a) > | HeapMutable -> sprintf "MutCreate%i(%s)" (mut b).tag > (args' a) > | StackMutable -> raise_codegen_error "The C backend doesn't > support stack mutable layout types." > | _ -> raise_codegen_error $"Compiler error: Expected a layout > type (8).\nGot: %s{show_ty b}" > |> return' > | TyLayoutIndexAll(L(i,YLayout(_,lay) & a)) -> > match lay with > | Heap -> heap a > | HeapMutable -> mut a > | StackMutable -> raise_codegen_error "The C backend doesn't > support indexing into stack mutable layout types." > |> fun x -> x.free_vars |> layout_index i > | TyLayoutIndexByKey(L(i,YLayout(_,lay) & a),key) -> > match lay with > | Heap -> heap a > | HeapMutable -> mut a > | StackMutable -> raise_codegen_error "The C backend doesn't > support indexing into stack mutable layout types." > |> fun x -> > x.free_vars_by_key > |> Map.tryPick (fun (_, k) v -> if k = key then Some v else > None) > |> Option.iter (layout_index i) > | TyLayoutIndexAll _ | TyLayoutIndexByKey _ -> raise_codegen_error > "Compiler error: Expected the TyV in layout index to be a layout type." > | TyLayoutMutableSet(L(i,t),b,c) -> > let q = mut t // `mut t` is correct here, peval strips the > YLayout. > let a = List.fold (fun s k -> > match s with > | DRecord l -> l |> Map.pick (fun (_,k') v -> if k' = k then > Some v else None) > | _ -> raise_codegen_error "Compiler error: Expected a > record.") q.data b > Array.map2 (fun (L(i',_)) b -> $"&(v{i}->v{i'}), {show_w b}") > (data_free_vars a) (data_term_vars c) |> String.concat ", " > |> sprintf "AssignMut%i(%s)" (assign_mut (tyvs_to_tys > q.free_vars)).tag |> return' > | TyArrayLiteral(a,b') -> > let b = List.map tup_data b' |> String.concat "," |> sprintf > "{%s}" > $"ArrayLit{(carray a).tag}({b'.Length}, ({tup_ty a} [[]]){b})" > |> return' > | TyArrayCreate(a,b) -> > let a = carray a > let is_heap : string = is_heap (env.ty_to_data >> > data_free_vars) a.tyvs |> sprintf "%b" > $"ArrayCreate{a.tag}({tup_data b}, {is_heap})" |> return' > | TyFailwith(a,b) -> > let fmt = @"%s\n" > line s $"fprintf(stderr, \"{fmt}\", {string_in_op b});" > line s "exit(EXIT_FAILURE);" // TODO: Print out the error traces > as well. > | TyConv(a,b) -> return' $"({tyv a}){tup_data b}" > | TyApply(L(i,_),b) -> > match args' b with > | "" -> $"v{i}->fptr(v{i})" > | b -> $"v{i}->fptr(v{i}, {b})" > |> return' > | TyArrayLength(_,b) -> return' $"{tup_data b}->len" > | TyStringLength(_,b) -> return' $"{tup_data b}->len-1" > | TyOp(Global,[[DLit (LitString x)]]) -> global' x > | TyOp(op,l) -> > let float_suffix = function > | DV(L(_,YPrim Float32T)) | DLit(LitFloat32 _) -> "f" > | _ -> "" > match op, l with > | Dyn,[[a]] -> tup_data a > | TypeToVar, _ -> raise_codegen_error "The use of `` should > never appear in generated code." > | StringIndex, [[a;b]] -> sprintf "%s->ptr[[%s]]" (tup_data a) > (tup_data b) > | StringSlice, [[a;b;c]] -> raise_codegen_error "String slice is > not supported natively in the C backend. Use a library implementation instead." > | ArrayIndex, [[DV(L(_,YArray t)) & a;b]] -> > match tup_ty t with > | "void" -> "/* void array index */" > | _ -> sprintf "%s->ptr[[%s]]" (tup_data a) (tup_data b) > | ArrayIndexSet, [[DV(L(_,YArray t)) as a;b;c]] -> > let a',b',c' = tup_data a, tup_data b, tup_data c > match c' with > | "" -> "/* void array set */" > | _ -> $"AssignArray{(assign_array (tyvs_to_tys (carray > t).tyvs)).tag}(&({a'}->ptr[[{b'}]]), {c'})" > // Math > | Add, [[a;b]] -> sprintf "%s + %s" (tup_data a) (tup_data b) > | Sub, [[a;b]] -> sprintf "%s - %s" (tup_data a) (tup_data b) > | Mult, [[a;b]] -> sprintf "%s * %s" (tup_data a) (tup_data b) > | Div, [[a;b]] -> sprintf "%s / %s" (tup_data a) (tup_data b) > | Mod, [[a;b]] -> sprintf "%s %% %s" (tup_data a) (tup_data b) > | Pow, [[a;b]] -> sprintf "pow%s(%s,%s)" (float_suffix a) > (tup_data a) (tup_data b) > | LT, [[a;b]] -> sprintf "%s < %s" (tup_data a) (tup_data b) > | LTE, [[a;b]] -> sprintf "%s <= %s" (tup_data a) (tup_data b) > | EQ, [[a;b]] when is_stringC a -> import "string.h"; sprintf > "strcmp(%s->ptr, %s->ptr) == 0" (string_in_op a) (string_in_op b) // TODO: > Optimize string structural comparison in the real_core > | NEQ, [[a;b]] when is_stringC a -> import "string.h"; sprintf > "strcmp(%s->ptr, %s->ptr) != 0" (string_in_op a) (string_in_op b) > | GT, [[a;b]] when is_stringC a -> import "string.h"; sprintf > "strcmp(%s->ptr, %s->ptr) > 0" (string_in_op a) (string_in_op b) > | GTE, [[a;b]] when is_stringC a -> import "string.h"; sprintf > "strcmp(%s->ptr, %s->ptr) >= 0" (string_in_op a) (string_in_op b) > | EQ, [[a;b]] -> sprintf "%s == %s" (tup_data a) (tup_data b) > | NEQ, [[a;b]] -> sprintf "%s != %s" (tup_data a) (tup_data b) > | GT, [[a;b]] -> sprintf "%s > %s" (tup_data a) (tup_data b) > | GTE, [[a;b]] -> sprintf "%s >= %s" (tup_data a) (tup_data b) > | BoolAnd, [[a;b]] -> sprintf "%s && %s" (tup_data a) (tup_data > b) > | BoolOr, [[a;b]] -> sprintf "%s || %s" (tup_data a) (tup_data > b) > | BitwiseAnd, [[a;b]] -> sprintf "%s & %s" (tup_data a) > (tup_data b) > | BitwiseOr, [[a;b]] -> sprintf "%s | %s" (tup_data a) (tup_data > b) > | BitwiseXor, [[a;b]] -> sprintf "%s ^ %s" (tup_data a) > (tup_data b) > | BitwiseComplement, [[a]] -> sprintf "~%s" (tup_data a) > > | ShiftLeft, [[a;b]] -> sprintf "%s << %s" (tup_data a) > (tup_data b) > | ShiftRight, [[a;b]] -> sprintf "%s >> %s" (tup_data a) > (tup_data b) > > | Neg, [[x]] -> sprintf "-%s" (tup_data x) > | Log, [[x]] -> import "math.h"; sprintf "log%s(%s)" > (float_suffix x) (tup_data x) > | Exp, [[x]] -> import "math.h"; sprintf "exp%s(%s)" > (float_suffix x) (tup_data x) > | Tanh, [[x]] -> import "math.h"; sprintf "tanh%s(%s)" > (float_suffix x) (tup_data x) > | Sqrt, [[x]] -> import "math.h"; sprintf "sqrt%s(%s)" > (float_suffix x) (tup_data x) > | NanIs, [[x]] -> import "math.h"; sprintf "isnan(%s)" (tup_data > x) > | UnionTag, [[DV(L(i,YUnion l)) as x]] -> > match l.Item.layout with > | UHeap -> "->tag" > | UStack -> ".tag" > |> sprintf "v%i%s" i > | _ -> raise_codegen_error <| sprintf "Compiler error: %A with > %i args not supported" op l.Length > |> return' > and print_ordered_args s v = // Unlike C# for example, C keeps the > struct fields in input order. To reduce padding, it is best to order the fields > from largest to smallest. > order_argsC v |> Array.iter (fun (L(i,x)) -> line s $"{tyv x} > v{i};") > and method_templ is_while fun_name : _ -> MethodRecC = > jp (fun ((jp_body,key & (C(args,_))),i) -> > match (fst env.join_point_method.[[jp_body]]).[[key]] with > | Some a, Some range, name -> {tag=i; free_vars=rdata_free_vars > args; range=range; body=a; name=name} > | _ -> raise_codegen_error "Compiler error: The method > dictionary is malformed" > ) (fun _ s_typ s_fun x -> > let ret_ty = tup_ty x.range > let args = x.free_vars |> Array.mapi (fun i (L(_,x)) -> $"{tyv > x} v{i}") |> String.concat ", " > let fun_name = Option.defaultValue fun_name x.name > line s_fun (sprintf "%s %s%i(%s){" ret_ty fun_name x.tag args) > binds_start (if is_while then [[||]] else x.free_vars) (indent > s_fun) x.body > line s_fun "}" > ) > and method_while : _ -> MethodRecC = method_templ true "method_while" > and method : _ -> MethodRecC = method_templ false "method" > and closure : _ -> ClosureRecC = > jp (fun ((jp_body,key & (C(args,_,fun_ty))),i) -> > match fun_ty with > | YFun(domain,range,FT_Vanilla) -> > match (fst env.join_point_closure.[[jp_body]]).[[key]] with > | Some(domain_args, body) -> {tag=i; > free_vars=rdata_free_vars args; domain=domain; domain_args=data_free_vars > domain_args; range=range; body=body} > | _ -> raise_codegen_error "Compiler error: The method > dictionary is malformed" > | YFun(_,_,_)-> raise_codegen_error "Non-standard functions are > not supported in the C backend." > | _ -> raise_codegen_error "Compiler error: Unexpected type in > the closure join point." > ) (fun _ s_typ s_fun x -> > let i, range = x.tag, tup_ty x.range > line s_typ (sprintf "typedef struct Closure%i Closure%i;" i i) > line s_typ (sprintf "struct Closure%i {" i) > let _ = > let s_typ = indent s_typ > line s_typ $"int refc;" > line s_typ $"void (*decref_fptr)(Closure{i} *);" > match x.domain_args |> Array.map (fun (L(_,t)) -> tyv t) |> > String.concat ", " with > | "" -> $"{range} (*fptr)(Closure{i} *);" > | domain_args_ty -> $"{range} (*fptr)(Closure{i} *, > {domain_args_ty});" > |> line s_typ > print_ordered_args s_typ x.free_vars > line s_typ "};" > > line s_fun (sprintf "static inline void > ClosureDecrefBody%i(Closure%i * x){" i i) > let _ = > let s_fun = indent s_fun > x.free_vars |> refc_change (fun i -> $"x->v{i}") -1 |> line' > s_fun > line s_fun "}" > > print_decref s_fun $"ClosureDecref{i}" $"Closure{i}" > $"ClosureDecrefBody{i}" > > match x.domain_args |> Array.map (fun (L(i,t)) -> $"{tyv t} > v{i}") |> String.concat ", " with > | "" -> sprintf "%s ClosureMethod%i(Closure%i * x){" range i i > | domain_args -> sprintf "%s ClosureMethod%i(Closure%i * x, > %s){" range i i domain_args > |> line s_fun > let _ = > let s_fun = indent s_fun > x.free_vars |> Array.map (fun (L(i,t)) -> $"{tyv t} v{i} = > x->v{i};") |> line' s_fun > line s_fun $"ClosureDecref{i}(x);" > binds_start x.domain_args s_fun x.body > line s_fun "}" > > let fun_tag = (cfun (x.domain,x.range)).tag > let free_vars = x.free_vars |> Array.map (fun (L(i,t)) -> $"{tyv > t} v{i}") > line s_fun (sprintf "Fun%i * ClosureCreate%i(%s){" fun_tag i > (String.concat ", " free_vars)) > let _ = > let s_fun = indent s_fun > line s_fun $"Closure{i} * x = {malloc}(sizeof(Closure{i}));" > line s_fun "x->refc = 1;" > line s_fun $"x->decref_fptr = ClosureDecref{i};" > line s_fun $"x->fptr = ClosureMethod{i};" > x.free_vars |> Array.map (fun (L(i,_)) -> $"x->v{i} = > v{i};") |> line' s_fun > line s_fun $"return (Fun{fun_tag} *) x;" > line s_fun "}" > ) > and cfun : _ -> CFunRecC = > cfun' (fun _ s_typ s_fun x -> > let i, range = x.tag, tup_ty x.range > line s_typ $"typedef struct Fun{i} Fun{i};" > line s_typ (sprintf "struct Fun%i{" i) > let _ = > let s_typ = indent s_typ > line s_typ $"int refc;" > line s_typ $"void (*decref_fptr)(Fun{i} *);" > match x.domain_args_ty |> Array.map tyv |> String.concat ", > " with > | "" -> $"{range} (*fptr)(Fun{i} *);" > | domain_args_ty -> $"{range} (*fptr)(Fun{i} *, > {domain_args_ty});" > |> line s_typ > line s_typ "};" > ) > and tup : _ -> TupleRecC = > tuple (fun _ s_typ s_fun x -> > let name = sprintf "Tuple%i" x.tag > line s_typ "typedef struct {" > x.tys |> Array.mapi (fun i x -> L(i,x)) |> print_ordered_args > (indent s_typ) > line s_typ (sprintf "} %s;" name) > > let args = x.tys |> Array.mapi (fun i x -> $"{tyv x} v{i}") > line s_fun (sprintf "static inline %s TupleCreate%i(%s){" name > x.tag (String.concat ", " args)) > let _ = > let s_fun = indent s_fun > line s_fun $"{name} x;" > Array.init args.Length (fun i -> $"x.v{i} = v{i};") |> line' > s_fun > line s_fun $"return x;" > line s_fun "}" > ) > and assign_mut : _ -> TupleRecC = > tuple (fun _ s_typ s_fun x -> > let tyvs = Array.mapi (fun i t -> L(i,t)) x.tys > let args = Array.mapi (fun i t -> let t = tyv t in $"{t} * a{i}, > {t} b{i}") x.tys |> String.concat ", " > line s_fun (sprintf "static inline void AssignMut%i(%s){" x.tag > args) > let _ = > let s_fun = indent s_fun > refc_change (fun i -> $"b{i}") 1 tyvs |> line' s_fun > refc_change (fun i -> $"*a{i}") -1 tyvs |> line' s_fun > Array.init tyvs.Length (fun i -> $"*a{i} = b{i};") |> line' > s_fun > line s_fun "}" > ) > and assign_array : _ -> TupleRecC = > tuple (fun _ s_typ s_fun x -> > let tyvs, T = Array.mapi (fun i t -> L(i,t)) x.tys, tup_ty_tys > x.tys > line s_fun (sprintf "static inline void AssignArray%i(%s * a, %s > b){" x.tag T T) > let _ = > let s_fun = indent s_fun > match tyvs with > | [[||]] -> raise_codegen_error "Compiler error: Void types > not allowed in assign." > | [[|t|]] -> > refc_change (fun i -> "b") 1 tyvs |> line' s_fun > refc_change (fun i -> "*a") -1 tyvs |> line' s_fun > $"*a = b;" |> line s_fun > | _ -> > refc_change (fun i -> $"b.v{i}") 1 tyvs |> line' s_fun > refc_change (fun i -> $"a->v{i}") -1 tyvs |> line' s_fun > $"*a = b;" |> line s_fun > line s_fun "}" > ) > and layout_tmpl name : _ -> LayoutRecC = > layout (fun _ s_typ s_fun (x : LayoutRecC) -> > let i = x.tag > let name' = sprintf "%s%i" name i > > line s_typ "typedef struct {" > let _ = > let s_typ = indent s_typ > line s_typ "int refc;" > print_ordered_args s_typ x.free_vars > line s_typ (sprintf "} %s;" name') > > line s_fun (sprintf "static inline void %sDecrefBody%i(%s * x){" > name i name') > let _ = > let s_fun = indent s_fun > x.free_vars |> refc_change (fun i -> $"x->v{i}") -1 |> line' > s_fun > line s_fun "}" > > print_decref s_fun $"{name}Decref{i}" name' > $"{name}DecrefBody{i}" > > let args = x.free_vars |> Array.map (fun (L(i,x)) -> $"{tyv x} > v{i}") > line s_fun (sprintf "%s * %sCreate%i(%s){" name' name i > (String.concat ", " args)) > let _ = > let s_fun = indent s_fun > line s_fun $"{name'} * x = {malloc}(sizeof({name'}));" > line s_fun "x->refc = 1;" > Array.init args.Length (fun i -> $"x->v{i} = v{i};") |> > line' s_fun > line s_fun $"return x;" > line s_fun "}" > ) > and heap : _ -> LayoutRecC = layout_tmpl "Heap" > and mut : _ -> LayoutRecC = layout_tmpl "Mut" > and union_tmpl is_stack : Union -> UnionRecC = > let inline map_iteri f x = Map.fold (fun i k v -> f i k v; i+1) 0 x > |> ignore > union (fun s_fwd s_typ s_fun x -> > let i = x.tag > match is_stack with > | true -> line s_typ "typedef struct {" > | false -> > line s_fwd (sprintf "typedef struct UH%i UH%i;" i i) > line s_typ (sprintf "struct UH%i {" i) > let _ = > let s_typ = indent s_typ > match is_stack with > | true -> () > | false -> line s_typ "int refc;" > line s_typ "int tag;" > line s_typ "union {" > let _ = > let s_typ = indent s_typ > map_iteri (fun tag (_, k) v -> > if Array.isEmpty v = false then > line s_typ "struct {" > print_ordered_args (indent s_typ) v > line s_typ (sprintf "} case%i; // %s" tag k) > ) x.free_vars > line s_typ "};" > match is_stack with > | true -> line s_typ (sprintf "} US%i;" i) > | false -> line s_typ "};" > > let print_refc name typ q = > line s_fun (sprintf "static inline void %s(%s * x){" name > typ) > let _ = > let s_fun = indent s_fun > line s_fun "switch (x->tag) {" > map_iteri (fun tag k v -> > let s_fun = indent s_fun > let refc = v |> refc_change (fun i -> > $"x->case{tag}.v{i}") q > if refc.Length <> 0 then > line s_fun (sprintf "case %i: {" tag) > let _ = > let s_fun = indent s_fun > refc |> line' s_fun > line s_fun "break;" > line s_fun "}" > ) x.free_vars > line s_fun "}" > line s_fun "}" > > match is_stack with > | true -> > print_refc $"USIncrefBody{i}" $"US{i}" 1 > print_refc $"USDecrefBody{i}" $"US{i}" -1 > | false -> print_refc $"UHDecrefBody{i}" $"UH{i}" -1 > > match is_stack with > | true -> > line s_fun (sprintf "void USIncref%i(US%i * x){ > USIncrefBody%i(x); }" i i i) > line s_fun (sprintf "void USDecref%i(US%i * x){ > USDecrefBody%i(x); }" i i i) > | false -> > line s_fwd (sprintf "void UHDecref%i(UH%i * x);" i i) > print_decref s_fun $"UHDecref{i}" $"UH{i}" > $"UHDecrefBody{i}" > > map_iteri (fun tag (_, k) v -> > let args = v |> Array.map (fun (L(i,t)) -> $"{tyv t} v{i}") > |> String.concat ", " > if is_stack then > line s_fun (sprintf "US%i US%i_%i(%s) { // %s" i i tag > args k) > let _ = > let s_fun = indent s_fun > line s_fun $"US{i} x;" > line s_fun $"x.tag = {tag};" > if v.Length <> 0 then > v |> Array.map (fun (L(i,t)) -> > $"x.case{tag}.v{i} = v{i};") |> line' s_fun > line s_fun "return x;" > line s_fun "}" > else > line s_fun (sprintf "UH%i * UH%i_%i(%s) { // %s" i i tag > args k) > let _ = > let s_fun = indent s_fun > line s_fun $"UH{i} * x = {malloc}(sizeof(UH{i}));" > line s_fun $"x->tag = {tag};" > line s_fun "x->refc = 1;" > if v.Length <> 0 then > v |> Array.map (fun (L(i,t)) -> > $"x->case{tag}.v{i} = v{i};") |> line' s_fun > line s_fun $"return x;" > line s_fun "}" > ) x.free_vars > ) > and ustack : _ -> UnionRecC = union_tmpl true > and uheap : _ -> UnionRecC = union_tmpl false > and carray : _ -> ArrayRecC = > carray' (fun _ s_typ s_fun x -> > let i, len_t, ptr_t = x.tag, prim size_t, tup_ty_tyvs x.tyvs > line s_typ "typedef struct {" > let _ = > let s_typ = indent s_typ > line s_typ "int refc;" > line s_typ $"{len_t} len;" > if ptr_t <> "void" then line s_typ $"{ptr_t} ptr[[]];" // > flexible array member > line s_typ (sprintf "} Array%i;" i) > > > let print_body p s_fun q = > let refcs = x.tyvs |> refc_change (fun i -> if 1 < > x.tyvs.Length then $"v.v{i}" else "v") q > if refcs.Length <> 0 then > p() > line s_fun (sprintf "for (%s i=0; i < len; i++){" len_t) > let _ = > let s_fun = indent s_fun > line s_fun $"{ptr_t} v = ptr[[i]];" > refcs |> line' s_fun > line s_fun "}" > > line s_fun (sprintf "static inline void > ArrayDecrefBody%i(Array%i * x){" i i) > let _ = > let s_fun = indent s_fun > print_body (fun () -> > line s_fun $"{len_t} len = x->len;" > line s_fun $"{ptr_t} * ptr = x->ptr;" > ) s_fun -1 > line s_fun "}" > > print_decref s_fun $"ArrayDecref{i}" $"Array{i}" > $"ArrayDecrefBody{i}" > > line s_fun (sprintf "Array%i * ArrayCreate%i(%s len, bool > init_at_zero){" i i len_t) > let _ = > let s_fun = indent s_fun > match ptr_t with > | "void" -> line s_fun $"{len_t} size = sizeof(Array{i});" > | _ -> line s_fun $"{len_t} size = sizeof(Array{i}) + > sizeof({ptr_t}) * len;" > line s_fun $"Array{i} * x = {malloc}(size);" > line s_fun "if (init_at_zero) { memset(x,0,size); }" > line s_fun "x->refc = 1;" > line s_fun "x->len = len;" > line s_fun "return x;" > line s_fun "}" > > line s_fun (sprintf "Array%i * ArrayLit%i(%s len, %s * ptr){" i > i len_t ptr_t) > let _ = > let s_fun = indent s_fun > line s_fun $"Array{i} * x = ArrayCreate{i}(len, false);" > if ptr_t <> "void" then > line s_fun $"memcpy(x->ptr, ptr, sizeof({ptr_t}) * > len);" > print_body (fun () -> ()) (indent s_fun) 1 > line s_fun "return x;" > line s_fun "}" > ) > and cstring : unit -> unit = > cstring' (fun _ s_typ s_fun () -> > let char = YPrim CharT > let size_t, ptr_t, tag = prim size_t, tyv char, (carray > char).tag > line s_typ $"typedef Array{tag} String;" > > line s_fun "static inline void StringDecref(String * x){" > line (indent s_fun) $"return ArrayDecref{tag}(x);" > line s_fun "}" > > line s_fun (sprintf "static inline String * StringLit(%s len, %s > * ptr){" size_t ptr_t) > line (indent s_fun) $"return ArrayLit{tag}(len, ptr);" > line s_fun "}" > ) > > match binds_last_dataC x |> data_term_vars |> term_vars_to_tysC with > | [[|YPrim Int32T|]] -> > import "stdbool.h" > import "stdint.h" > import "stdio.h" > import "stdlib.h" > > let main_defs = {text=System.Text.StringBuilder(); indent=0} > import "string.h" // for memcpy > > line main_defs (sprintf "%s main(){" (prim Int32T)) > binds_start [[||]] (indent main_defs) x > line main_defs "}" > > let program = System.Text.StringBuilder() > > globals |> Seq.iter (fun x -> program.AppendLine(x) |> ignore) > fwd_dcls |> Seq.iter (fun x -> program.Append(x) |> ignore) > types |> Seq.iter (fun x -> program.Append(x) |> ignore) > functions |> Seq.iter (fun x -> program.Append(x) |> ignore) > program.Append(main_defs.text).ToString() > | _ -> > raise_codegen_error "The return type of main in the C backend should > be a 32-bit int." > > ── fsharp ────────────────────────────────────────────────────────────────────── > ── [ 5.96s - diagnostics ] ───────────────────────────────────────────────────── > │ input.fsx (572,39)-(572,45) typecheck warning This and other > recursive references to the object(s) being defined will be checked for > initialization-soundness at runtime through the use of a delayed reference. This > is because you are defining one or more recursive objects, rather than recursive > functions. This warning may be suppressed by using '#nowarn "40"' or > '--nowarn:40'. > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## CodegenCuda > > ── fsharp ────────────────────────────────────────────────────────────────────── > module CodegenCuda = > // open System > // open System.Text > open System.Collections.Generic > > let backend_nameCuda = "Cuda" > let max_tag = 255uy > > let is_stringCuda = function DV(L(_,YPrim StringT)) | DLit(LitString _) -> > true | _ -> false > let sizeof_tyvCuda = function > | YPrim (Int64T | UInt64T | Float64T) -> 8 > | YPrim (Int32T | UInt32T | Float32T) -> 4 > | YPrim (Int16T | UInt16T) -> 2 > | YPrim (Int8T | UInt8T | CharT | BoolT) -> 1 > | _ -> 8 > let order_args v = v |> Array.sortWith (fun (L(_,t)) (L(_,t')) -> compare > (sizeof_tyvCuda t') (sizeof_tyvCuda t)) > let lineCuda x s = if s <> "" then x.text.Append(' ', x.indent).AppendLine s > |> ignore > let lineCuda' x s = line x (String.concat " " s) > > type BindsReturnCuda = > | BindsTailEnd > | BindsLocal of TyV [[]] > > let term_vars_to_tysCuda x = x |> Array.map (function WV(L(_,t)) -> t | WLit > x -> YPrim (lit_to_primitive_type x)) > let binds_last_dataCuda x = x |> Array.last |> function > TyLocalReturnData(x,_) | TyLocalReturnOp(_,_,x) -> x | TyLet _ -> > raise_codegen_error "Compiler error: Cannot find the return data of the last > bind." > > type LayoutRecCuda = {tag : int; data : Data; free_vars : TyV[[]]; > free_vars_by_key : Map<int * string, TyV[[]]>} > type UnionRecCuda = {tag : int; free_vars : Map<int * string, TyV[[]]>; > is_heap : bool} > type MethodRecCuda = {tag : int; free_vars : TyV[[]]; range : Ty; body : > TypedBind[[]]; name : string option} > type ClosureRecCuda = {tag : int; free_vars : TyV[[]]; domain : Ty; range : > Ty; funtype : FunType; body : TypedBind[[]]} > type TupleRecCuda = {tag : int; tys : Ty [[]]} > type CFunRecCuda = {tag : int; domain : Ty; range : Ty; funtype : FunType} > > //let size_t = UInt32T > > // Replaces the invalid symbols in Spiral method names for the C backend. > let fix_method_name (x : string) = x.Replace(''','_') + "_" > > let unroll_pop (s : Stack<int>) = if s.Count > 0 then s.Pop() else -1 > let unroll_peek (s : Stack<int>) = if s.Count > 0 then s.Peek() else -1 > > let lit_stringCuda x = > let strb = System.Text.StringBuilder(String.length x + 2) > strb.Append '"' |> ignore > String.iter (function > | '"' -> strb.Append "\\\"" > | '\b' -> strb.Append @"\b" > | '\t' -> strb.Append @"\t" > | '\n' -> strb.Append @"\n" > | '\r' -> strb.Append @"\r" > | '\\' -> strb.Append @"\\" > | x -> strb.Append x > >> ignore > ) x > strb.Append '"' |> ignore > strb.ToString() > > let codegenCuda (default_env : DefaultEnv) (globals : _ ResizeArray, > fwd_dcls : _ ResizeArray, types : _ ResizeArray, functions : _ ResizeArray, > main_defs : _ ResizeArray) (env : PartEvalResult) = > let print show r = > let s_typ_fwd = {text=System.Text.StringBuilder(); indent=0} > let s_typ = {text=System.Text.StringBuilder(); indent=0} > let s_fun = {text=System.Text.StringBuilder(); indent=0} > show s_typ_fwd s_typ s_fun r > let f (a : _ ResizeArray) (b : CodegenEnv) = > let text = b.text.ToString() > if text <> "" then a.Add(text) > f fwd_dcls s_typ_fwd > f types s_typ > f functions s_fun > > let layout show = > let dict' = Dictionary(HashIdentity.Structural) > let dict = Dictionary(HashIdentity.Reference) > let f x : LayoutRecCuda = > match x with > | YLayout(x,_) -> > let x = env.ty_to_data x > let a, b = > match x with > | DRecord a -> let a = Map.map (fun _ -> data_free_vars) a > in a |> Map.toArray |> Array.collect snd, a > | _ -> data_free_vars x, Map.empty > {data=x; free_vars=a; free_vars_by_key=b; tag=dict'.Count} > | _ -> raise_codegen_error $"Compiler error: Expected a layout > type (1).\nGot: %s{show_ty x}" > fun x -> > let mutable dirty = false > let r = memoize dict (memoize dict' (fun x -> dirty <- true; f > x)) x > if dirty then print show r > r > > let union show = > let dict = Dictionary(HashIdentity.Reference) > let f (a : Union) : UnionRecCuda = > let free_vars = a.Item.cases |> Map.map (fun _ -> env.ty_to_data > >> data_free_vars) > {free_vars=free_vars; tag=dict.Count; is_heap=a.Item.layout = > UHeap} > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print show r > r > > let jp f show = > let dict = Dictionary(HashIdentity.Structural) > let f x = f (x, dict.Count) > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print show r > r > > let tuple show = > let dict = Dictionary(HashIdentity.Structural) > let f x = {tag=dict.Count; tys=x} > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print show r > r > > let cfun' show = > let dict = Dictionary(HashIdentity.Structural) > let f (a : Ty, b : Ty, t : FunType) = {tag=dict.Count; domain=a; > range=b; funtype=t} > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print show r > r > > let args x = x |> Array.map (fun (L(i,_)) -> sprintf "v%i" i) |> > String.concat ", " > > let tmp = > let mutable i = 0u > fun () -> let x = i in i <- i + 1u; x > > let global' = > let has_added = HashSet() > fun x -> if has_added.Add(x) then globals.Add x > > let import x = global' $"#include <{x}>" > let import' x = global' $"#include \"{x}\"" > > let tyvs_to_tys (x : TyV [[]]) = Array.map (fun (L(i,t)) -> t) x > > let rec binds_start (s : CodegenEnv) (x : TypedBind [[]]) = binds > (Stack()) s BindsTailEnd x > and return_local s ret (x : string) = > match ret with > | [[||]] -> line s $"{x};" > | [[|L(i,_)|]] -> line s $"v{i} = {x};" > | ret -> > let tmp_i = tmp() > line s $"{tup_ty_tyvs ret} tmp{tmp_i} = {x};" > Array.mapi (fun i (L(i',_)) -> $"v{i'} = tmp{tmp_i}.v{i};") ret > |> lineCuda' s > and get_layout_rec lay a = > match lay with > | Heap -> heap a > | HeapMutable -> mut a > | StackMutable -> stack_mut a > and binds (unroll : Stack<int>) (s : CodegenEnv) (ret : BindsReturnCuda) > (stmts : TypedBind [[]]) = > let tup_destruct (a,b) = > Array.map2 (fun (L(i,_)) b -> > match b with > | WLit b -> $"v{i} = {lit b};" > | WV (L(i',_)) -> $"v{i} = v{i'};" > ) a b > Array.forall (fun x -> > match x with > | TyLet(d,trace,a) -> > try let d = data_free_vars d > let decl_vars () = Array.map (fun (L(i,t)) -> $"{tyv t} > v{i};") d > let layout_index layout (x'_i : int) (x' : TyV [[]]) = > match layout with > | Heap | HeapMutable -> Array.map2 (fun (L(i,t)) > (L(i',_)) -> $"{tyv t} & v{i} = v{x'_i}.base->v{i'};") d x' |> lineCuda' s > | StackMutable -> Array.map2 (fun (L(i,t)) (L(i',_)) > -> $"{tyv t} & v{i} = v{x'_i}.v{i'};") d x' |> lineCuda' s > match a with > | TyToLayout(a,YLayout(_,StackMutable) & b) -> > match d with > | [[|L(i,YLayout(_,StackMutable))|]] -> // For the > regular arrays. > let tag = (stack_mut b).tag > line s $"StackMut{tag} v{i}{{{args' a}}};" > true > | _ -> > raise_codegen_error "Compiler error: Expected a > stack mutable layout type." > | TyLayoutIndexAll(x) -> > match x with > | L(i,YLayout(_,lay) & a) -> (get_layout_rec lay > a).free_vars |> layout_index lay i > | _ -> raise_codegen_error "Compiler error: Expected > the TyV in layout index to be a layout type." > true > | TyLayoutIndexByKey(x,key) -> > match x with > | L(i,YLayout(_,lay) & a) -> (get_layout_rec lay > a).free_vars_by_key |> Map.pick (fun (_, k') v' -> if key = k' then Some v' else > None) |> layout_index lay i > | _ -> raise_codegen_error "Compiler error: Expected > the TyV in layout index by key to be a layout type." > true > | TyMacro a -> > let m = a |> List.map (function CMText x -> x | > CMTerm x -> tup_data x | CMType x -> tup_ty x | CMTypeLit x -> type_lit x) |> > String.concat "" > if m.StartsWith("#pragma") then > line s m > true > elif m = "break" then > line s "break;" > false > elif m.StartsWith("return") then > line s $"{m};" > false > else > let q = m.Split("\\v") > if q.Length = 1 then > decl_vars() |> lineCuda' s > return_local s d m > true > else > if d.Length = q.Length-1 then > let w = > System.Text.StringBuilder(m.Length+8) > let tag (L(i,_)) = i : int > Array.iteri (fun i v -> > w.Append(q.[[i]]).Append('v').Append(tag v) |> ignore) d > > w.Append(q.[[d.Length]]).Append(';').ToString() |> line s > true > else > raise_codegen_error "The special \\v > macro requires the same number of free vars in its binding as there are \\v in > the code." > | TyArrayLiteral(a,b') -> > let inits = List.map tup_data b' |> String.concat > "," |> sprintf "{%s}" > match d with > | [[|L(i,YArray t)|]] -> // For the regular arrays. > line s $"%s{tup_ty t} v{i}[[]] = %s{inits};" > true > | _ -> > raise_codegen_error "Compiler error: Expected a > single variable on the left side of an array literal op." > | TyArrayCreate(a,b) -> > match d with > | [[|L(i,YArray t)|]] -> > match tup_ty t with > | "void" -> line s "/* void array create */" > | t -> line s $"{t} v{i}[[{tup_data b}]];" > true > | _ -> raise_codegen_error "Compiler error: Expected > a single variable on the left side of an array create op." > | TyJoinPoint(JPClosure(a,b),b') -> > match d with > | [[|L(i,_)|]] -> > let x = closure (a,b) > match x.funtype with > | FT_Pointer -> > let y = cfun (x.domain,x.range,x.funtype) > line s $"Fun{y.tag} v{i} = > FunPointerMethod{x.tag};" > | FT_Vanilla -> > let args = args b' > line s $"Closure{x.tag} v{i}{{{args}}};" > | FT_Closure -> > let y = cfun (x.domain,x.range,x.funtype) > let args = args b' > line s $"Fun{y.tag} v{i}{{new > Closure{x.tag}{{{args}}}}};" > true > | _ -> raise_codegen_error "Compiler error: Expected > a single variable on the left side of a closure join point." > | _ -> > decl_vars() |> lineCuda' s > op unroll s (BindsLocal d) a > true > with :? CodegenError as e -> raise_codegen_error' trace > (e.Data0, e.Data1) > | TyLocalReturnOp(trace,a,_) -> > try op unroll s ret a > true > with :? CodegenError as e -> raise_codegen_error' trace > (e.Data0, e.Data1) > | TyLocalReturnData(d,trace) -> > try match ret with > | BindsLocal l -> lineCuda' s (tup_destruct > (l,data_term_vars d)) > | BindsTailEnd -> line s $"return {tup_data d};" > true > with :? CodegenError as e -> raise_codegen_error' trace > (e.Data0, e.Data1) > ) stmts > |> ignore > and show_w = function WV(L(i,_)) -> sprintf "v%i" i | WLit a -> lit a > and args' b = data_term_vars b |> Array.map show_w |> String.concat ", " > and tup_term_vars x = > let args = Array.map show_w x |> String.concat ", " > if 1 < x.Length then sprintf "Tuple%i{%s}" (tup > (term_vars_to_tysCuda x)).tag args else args > and tup_data x = tup_term_vars (data_term_vars x) > and tup_ty_tys = function > | [[||]] -> "void" > | [[|x|]] -> tyv x > | x -> sprintf "Tuple%i" (tup x).tag > and tup_ty_tyvs (x : TyV [[]]) = tup_ty_tys (tyvs_to_tys x) > and tup_ty x = env.ty_to_data x |> data_free_vars |> tup_ty_tyvs > and tyv x = > match x with > | YUnion a -> > match a.Item.layout with > | UStack -> sprintf "Union%i" (unions a).tag > | UHeap -> sprintf "sptr<Union%i>" (unions a).tag > | YLayout(_,lay) as a -> > match lay with > | Heap -> sprintf "sptr<Heap%i>" (heap a).tag > | HeapMutable -> sprintf "sptr<Mut%i>" (mut a).tag > | StackMutable -> sprintf "StackMut%i &" (stack_mut a).tag > | YMacro [[Text "backend_switch "; Type (YRecord r)]] -> > match r |> Map.tryPick (fun (_, k) v -> if k = backend_nameCuda > then Some v else None) with > | Some x -> tup_ty x > | None -> raise_codegen_error $"In the backend_switch, expected > a record with the '{backend_nameCuda}' field." > | YMacro a -> a |> List.map (function Text a -> a | Type a -> tup_ty > a | TypeLit a -> type_lit a) |> String.concat "" > | YPrim a -> prim a > | YArray a -> sprintf "%s *" (tup_ty a) > | YFun(a,b,t) -> $"Fun%i{(cfun (a,b,t)).tag}" > | YExists -> raise_codegen_error "Existentials are not supported at > runtime. They are a compile time feature only." > | YForall -> raise_codegen_error "Foralls are not supported at > runtime. They are a compile time feature only." > | a -> raise_codegen_error (sprintf "Compiler error: Type not > supported in the codegen.\nGot: %A" a) > and prim = function > | Int8T -> "char" > | Int16T -> "short" > | Int32T -> "int" > | Int64T -> "long long" > | UInt8T -> "unsigned char" > | UInt16T -> "unsigned short" > | UInt32T -> "unsigned int" > | UInt64T -> "unsigned long long" > | Float32T -> "float" > | Float64T -> "double" > | BoolT -> "bool" // part of c++ standard > | CharT -> "char" > | StringT -> "const char *" > and lit = function > | LitInt8 x -> sprintf "%i" x > | LitInt16 x -> sprintf "%i" x > | LitInt32 x -> sprintf "%i" x > | LitInt64 x -> sprintf "%ill" x > | LitUInt8 x -> sprintf "%iu" x > | LitUInt16 x -> sprintf "%iu" x > | LitUInt32 x -> sprintf "%iu" x > | LitUInt64 x -> sprintf "%iull" x > | LitFloat32 x -> > if x = infinityf then "1.0f / 0.0f" > elif x = -infinityf then "-1.0f / 0.0f" > elif System.Single.IsNaN x then "0.0f / 0.0f" > else x.ToString("R") |> add_dec_point |> sprintf "%sf" > | LitFloat64 x -> > if x = infinity then "1.0 / 0.0" > elif x = -infinity then "-1.0 / 0.0" > elif System.Double.IsNaN x then "0.0 / 0.0" > else x.ToString("R") |> add_dec_point > | LitString x -> lit_stringCuda x > | LitChar x -> > match x with > | '\b' -> @"\b" > | '\n' -> @"\n" > | '\t' -> @"\t" > | '\r' -> @"\r" > | '\\' -> @"\\" > | x -> string x > |> sprintf "'%s'" > | LitBool x -> if x then "true" else "false" // true and false are > defined in stddef.h > and type_lit = function > | YLit x -> lit x > | YSymbol x -> x > | x -> raise_codegen_error "Compiler error: Expecting a type literal > in the macro." > and op (unroll : Stack<int>)s (ret : BindsReturnCuda) a = > let binds a b = binds unroll a b > let return' (x : string) = > match ret with > | BindsLocal ret -> return_local s ret x > | BindsTailEnd -> line s $"return {x};" > let jp (a,b') = > let args = args b' > match a with > | JPMethod(a,b) -> > let x = method (a,b) > let method_name = Option.defaultValue "method_" x.name > $"{method_name}{x.tag}({args})" > | JPClosure(a,b) -> > let x = closure (a,b) > match x.funtype with > | FT_Vanilla -> raise_codegen_error "Compiler error: The > vanilla function case should have been blocked elsewhere." > | FT_Pointer -> $"FunPointerMethod{x.tag}" > | FT_Closure -> $"csptr<ClosureBase{x.tag}>{{new > Closure{x.tag}{{{args}}}}}" > match a with > | TyMacro _ -> raise_codegen_error "Macros are supposed to be taken > care of in the `binds` function." > | TyIf(cond,tr,fl) -> > line s (sprintf "if (%s){" (tup_data cond)) > binds (indent s) ret tr > line s "} else {" > binds (indent s) ret fl > line s "}" > | TyJoinPoint(a,args) -> return' (jp (a, args)) > | TyBackend(_,_,r) -> raise_codegen_error_backend r "The Cuda > backend does not support the nesting of other backends." > | TyWhile(a,b) -> > let cond = > match a with > | JPMethod(a,b),b' -> sprintf "while_method_%i(%s)" > (method_while (a,b)).tag (args b') > | _ -> raise_codegen_error "Expected a regular method rather > than closure create in the while conditional." > match unroll_peek unroll with > | -1 -> () > | 0 -> line s $"#pragma unroll" > | i -> line s $"#pragma unroll %i{i}" > line s (sprintf "while (%s){" cond) > binds (indent s) (BindsLocal [[||]]) b > line s "}" > | TyDo a | TyIndent a -> > binds s ret a > | TyIntSwitch(L(v_i,_),on_succ,on_fail) -> > line s (sprintf "switch (v%i) {" v_i) > let _ = > let s = indent s > Array.iteri (fun i x -> > line s (sprintf "case %i: {" i) > binds (indent s) ret x > line (indent s) "break;" > line s "}" > ) on_succ > line s "default: {" > binds (indent s) ret on_fail > line s "}" > line s "}" > | TyUnionUnbox(is,x,on_succs,on_fail) -> > let case_tags = x.Item.tags > let acs = match x.Item.layout with UHeap -> ".base->" | UStack > -> "." > let head = List.head is |> fun (L(i,_)) -> $"v{i}{acs}tag" > List.pairwise is > |> List.map (fun (L(i,_), L(i',_)) -> $"v{i}{acs}tag == > v{i'}{acs}tag") > |> String.concat " && " > |> function "" -> head | x -> $"{x} ? {head} : {max_tag}" > |> sprintf "switch (%s) {" |> line s > let _ = > let s = indent s > Map.iter (fun k (a,b) -> > let union_i = case_tags.[[k]] > line s (sprintf "case %i: { // %s" union_i k) > List.iter2 (fun (L(data_i,_)) a -> > let a, s = data_free_vars a, indent s > let qs = ResizeArray(a.Length) > Array.iteri (fun field_i (L(v_i,t) as v) -> > qs.Add $"{tyv t} v{v_i} = > v{data_i}{acs}case{union_i}.v{field_i};" > ) a > lineCuda' s qs > ) is a > binds (indent s) ret b > line (indent s) "break;" > line s "}" > ) on_succs > line s "default: {" > let _ = > let s = indent s > match on_fail with > | Some b -> binds s ret b > | None -> line s "assert(\"Invalid tag.\" && false); > __trap();" > line s "}" > line s "}" > | TyUnionBox(a,b,c') -> > let c = c'.Item > let i = c.tags.[[a]] > let vars = args' b > let tag = (unions c').tag > match c.layout with > | UHeap -> $"sptr<Union{tag}>{{new > Union{tag}{{Union{tag}_{i}{{{vars}}}}}}}" > | UStack -> $"Union{tag}{{Union{tag}_{i}{{{vars}}}}}" > |> return' > | TyToLayout(a,b) -> > match b with > | YLayout(_,layout) -> > match layout with > | Heap -> > let tag = (heap b).tag > $"sptr<Heap{tag}>{{new Heap{tag}{{{args' a}}}}}" > | HeapMutable -> > let tag = (mut b).tag > $"sptr<Mut{tag}>{{new Mut{tag}{{{args' a}}}}}" > | StackMutable -> raise_codegen_error "The Cuda backend > doesn't support stack mutable layout types." > | _ -> raise_codegen_error "Compiler error: Expected a layout > type (2)." > |> return' > | TyLayoutIndexAll(x) -> raise_codegen_error "Compiler error: > TyLayoutIndexAll should have been taken care of in TyLet." > | TyLayoutIndexByKey(x,key) -> raise_codegen_error "Compiler error: > TyLayoutIndexByKey should have been taken care of in TyLet." > | TyLayoutMutableSet(L(i,t),b,c) -> > match t with > | YLayout(_,lay) -> > match lay with > | HeapMutable -> > let a = > List.fold > (fun s k -> > match s with > | DRecord l -> l |> Map.pick (fun (_, k') v' > -> if k = k' then Some v' else None) > | _ -> raise_codegen_error "Compiler error: > Expected a record.") > (mut t).data b > Array.map2 (fun (L(i',_)) b -> $"v{i}.base->v{i'} = > {show_w b};") (data_free_vars a) (data_term_vars c) > | StackMutable -> > let a = List.fold (fun s k -> match s with DRecord l -> > l |> Map.pick (fun (_, k') v' -> if k = k' then Some v' else None) | _ -> > raise_codegen_error "Compiler error: Expected a record.") (stack_mut t).data b > Array.map2 (fun (L(i',_)) b -> $"v{i}.v{i'} = {show_w > b};") (data_free_vars a) (data_term_vars c) > | Heap -> raise_codegen_error "Compiler error (1): > TyLayoutMutableSet should only be HeapMutable or StackMutable." > | _ -> raise_codegen_error "Compiler error (2): > TyLayoutMutableSet should only be HeapMutable or StackMutable." > |> String.concat " " |> line s > | TyArrayLiteral(a,b') -> raise_codegen_error "Compiler error: > TyArrayLiteral should have been taken care of in TyLet." > | TyArrayCreate(a,b) -> raise_codegen_error "Compiler error: > TyArrayCreate should have been taken care of in TyLet." > | TyFailwith(a,b) -> > let string_in_op = function DLit (LitString b) -> lit_stringCuda > b | b -> raise_codegen_error "In the Cuda backend, the exception string must be > a literal." > let fmt = @"%s\n" > line s $"printf(\"{fmt}\", {string_in_op b});" > line s "__trap();" // TODO: Print out the error traces as well. > | TyConv(a,b) -> return' $"({tyv a}){tup_data b}" > | TyApply(L(i,_),b) -> > let rec loop = function > | DPair(a,b) -> tup_data a :: loop b > | a -> [[tup_data a]] > let args = loop b |> List.filter ((<>) "") |> String.concat ", " > $"v{i}({args})" |> return' > | TyArrayLength(_,b) -> raise_codegen_error "Array length is not > supported in the Cuda C++ backend as they are bare pointers." > | TyStringLength(_,b) -> raise_codegen_error "String length is not > supported in the Cuda C++ backend." > | TySizeOf t -> return' $"sizeof({tup_ty t})" > | TyOp(Global,[[DLit (LitString x)]]) -> global' x > | TyOp(PragmaUnrollPush,[[DLit (LitInt32 x)]]) -> unroll.Push(x); > line s $"// Pushing the loop unrolling to: {x}" > | TyOp(PragmaUnrollPop,[[]]) -> line s $"// Poping the loop > unrolling to: {unroll_pop unroll}" > | TyOp(op,l) -> > match op, l with > | Dyn,[[a]] -> tup_data a > | TypeToVar, _ -> raise_codegen_error "The use of `` should > never appear in generated code." > | StringIndex, [[a;b]] -> sprintf "%s[[%s]]" (tup_data a) > (tup_data b) > | StringSlice, [[a;b;c]] -> raise_codegen_error "String slice is > not supported natively in the C backend. Use a library implementation instead." > | ArrayIndex, [[DV(L(_,YArray t)) & a;b]] -> > match tup_ty t with > | "void" -> "/* void array index */" > | _ -> sprintf "%s[[%s]]" (tup_data a) (tup_data b) > | ArrayIndexSet, [[DV(L(_,YArray t)) as a;b;c]] -> > let a',b',c' = tup_data a, tup_data b, tup_data c > match c' with > | "" -> "/* void array set */" > | _ -> $"{a'}[[{b'}]] = {c'}" > // Math > | Add, [[a;b]] -> sprintf "%s + %s" (tup_data a) (tup_data b) > | Sub, [[a;b]] -> sprintf "%s - %s" (tup_data a) (tup_data b) > | Mult, [[a;b]] -> sprintf "%s * %s" (tup_data a) (tup_data b) > | Div, [[a;b]] -> sprintf "%s / %s" (tup_data a) (tup_data b) > | Mod, [[a;b]] -> sprintf "%s %% %s" (tup_data a) (tup_data b) > | Pow, [[a;b]] -> sprintf "pow(%s,%s)" (tup_data a) (tup_data b) > | LT, [[a;b]] -> sprintf "%s < %s" (tup_data a) (tup_data b) > | LTE, [[a;b]] -> sprintf "%s <= %s" (tup_data a) (tup_data b) > | EQ, [[a;b]] | NEQ, [[a;b]] | GT, [[a;b]] | GTE, [[a;b]] when > is_stringCuda a -> raise_codegen_error "String comparison operations are not > supported in the Cuda C++ backend." > | EQ, [[a;b]] -> sprintf "%s == %s" (tup_data a) (tup_data b) > | NEQ, [[a;b]] -> sprintf "%s != %s" (tup_data a) (tup_data b) > | GT, [[a;b]] -> sprintf "%s > %s" (tup_data a) (tup_data b) > | GTE, [[a;b]] -> sprintf "%s >= %s" (tup_data a) (tup_data b) > | BoolAnd, [[a;b]] -> sprintf "%s && %s" (tup_data a) (tup_data > b) > | BoolOr, [[a;b]] -> sprintf "%s || %s" (tup_data a) (tup_data > b) > | BitwiseAnd, [[a;b]] -> sprintf "%s & %s" (tup_data a) > (tup_data b) > | BitwiseOr, [[a;b]] -> sprintf "%s | %s" (tup_data a) (tup_data > b) > | BitwiseXor, [[a;b]] -> sprintf "%s ^ %s" (tup_data a) > (tup_data b) > | BitwiseComplement, [[a]] -> sprintf "~%s" (tup_data a) > > | ShiftLeft, [[a;b]] -> sprintf "%s << %s" (tup_data a) > (tup_data b) > | ShiftRight, [[a;b]] -> sprintf "%s >> %s" (tup_data a) > (tup_data b) > > | Neg, [[x]] -> sprintf "-%s" (tup_data x) > | Log, [[x]] -> sprintf "log(%s)" (tup_data x) > | Exp, [[x]] -> sprintf "exp(%s)" (tup_data x) > | Tanh, [[x]] -> sprintf "tanh(%s)" (tup_data x) > | Sqrt, [[x]] -> sprintf "sqrt(%s)" (tup_data x) > | Sin, [[x]] -> sprintf "sin(%s)" (tup_data x) > | Cos, [[x]] -> sprintf "cos(%s)" (tup_data x) > | NanIs, [[x]] -> sprintf "isnan(%s)" (tup_data x) > | Printf, [[fmt;str]] -> > match args' str with > | "" -> sprintf "printf(%s)" (tup_data fmt) > | str -> sprintf "printf(%s,%s)" (tup_data fmt) str > | UnionTag, [[DV(L(i,YUnion l)) as x]] -> > match l.Item.layout with > | UHeap -> ".base->tag" > | UStack -> ".tag" > |> sprintf "v%i%s" i > | _ -> raise_codegen_error <| sprintf "Compiler error: %A with > %i args not supported" op l.Length > |> return' > and print_ordered_args s v = // Unlike C# for example, C keeps the > struct fields in input order. To reduce padding, it is best to order the fields > from largest to smallest. > order_args v |> Array.iter (fun (L(i,x)) -> line s $"{tyv x} v{i};") > and method_template is_while : _ -> MethodRecCuda = > jp (fun ((jp_body,key & (C(args,_))),i) -> > match (fst env.join_point_method.[[jp_body]]).[[key]] with > | Some a, Some range, name -> {tag=i; free_vars=rdata_free_vars > args; range=range; body=a; name=Option.map fix_method_name name} > | _ -> raise_codegen_error "Compiler error: The method > dictionary is malformed" > ) (fun s_fwd s_typ s_fun x -> > let ret_ty = tup_ty x.range > let fun_name = Option.defaultValue (if is_while then > "while_method_" else "method_") x.name > let args = x.free_vars |> Array.mapi (fun i (L(_,x)) -> $"{tyv > x} v{i}") |> String.concat ", " > let inline_ = > if is_while then "inline " > else > line s_fwd $"__device__ {ret_ty} > {fun_name}{x.tag}({args});" > if fun_name.StartsWith "noinline" then "__noinline__ " > else "" > line s_fun $"__device__ {inline_}{ret_ty} > {fun_name}{x.tag}({args}){{" > binds_start (indent s_fun) x.body > line s_fun "}" > ) > and method : _ -> MethodRecCuda = method_template false > and method_while : _ -> MethodRecCuda = method_template true > and closure_args domain count_start = > let rec loop = function > | YPair(a,b) -> a :: loop b > | a -> [[a]] > let mutable count = count_start > let rename x = Array.map (fun (L(i,t)) -> let x = L(count,t) in > count <- count+1; x) x > let mutable i = 0 > loop domain |> List.choose (fun x -> > let n = env.ty_to_data x |> data_free_vars > let x = if n.Length <> 0 then Some(i, tup_ty_tyvs n, n |> > rename) else None > i <- i+1 > x > ) > and closure : _ -> ClosureRecCuda = > jp (fun ((jp_body,key & (C(args,_,fun_ty))),i) -> > match fun_ty with > | YFun(domain,range,t) -> > match (fst env.join_point_closure.[[jp_body]]).[[key]] with > | Some(domain_args, body) -> {tag=i; domain=domain; > range=range; body=body; free_vars=rdata_free_vars args; funtype=t} > | _ -> raise_codegen_error "Compiler error: The method > dictionary is malformed" > | _ -> raise_codegen_error "Compiler error: Unexpected type in > the closure join point." > ) (fun _ s_typ s_fun x -> > let i, range = x.tag, tup_ty x.range > let closure_args = closure_args x.domain x.free_vars.Length > let args = closure_args |> List.map (fun (i,ty,_) -> $"{ty} > tup{i}") |> String.concat ", " > let print_body s_fun = > let s_fun = indent s_fun > x.free_vars |> Array.map (fun (L(i,t)) -> > $"{tyv t} & v{i} = this->v{i};" > ) |> String.concat " " |> line s_fun > closure_args |> List.map (fun (i'',_,vars) -> > Array.mapi (fun i' (L(i,t)) -> > if vars.Length <> 1 then $"{tyv t} v{i} = > tup{i''}.v{i'};" > else $"{tyv t} v{i} = tup{i''};" > ) vars > |> String.concat " " > ) |> String.concat " " |> line s_fun > binds_start s_fun x.body > match x.funtype with > | FT_Pointer -> > $"__device__ {range} FunPointerMethod{i}({args}){{" |> line > s_fun > print_body s_fun > line s_fun "}" > | FT_Vanilla | FT_Closure -> > match x.funtype with > | FT_Pointer -> raise_codegen_error "Compiler error: The > pointer case have been taken care of (1)." > | FT_Closure -> > let i' = (cfun (x.domain,x.range,x.funtype)).tag > line s_typ $"struct Closure{i} : public ClosureBase{i'} > {{" > | FT_Vanilla -> > line s_typ $"struct Closure{i} {{" > let () = > let s_typ = indent s_typ > let () = // free vars in the environment > print_ordered_args s_typ x.free_vars > let () = // operator() > match x.funtype with > | FT_Pointer -> raise_codegen_error "Compiler error: > The pointer case have been taken care of (2)." > | FT_Vanilla -> line s_typ $"__device__ {range} > operator()({args}){{" > | FT_Closure -> line s_typ $"__device__ {range} > operator()({args}) override {{" > print_body s_typ > line s_typ "}" > let () = // constructor > match x.free_vars with > | [[||]] -> () > | _ -> > let constructor_args = > x.free_vars > |> Array.map (fun (L(i,t)) -> $"{tyv t} > _v{i}") > |> String.concat ", " > let initializer_args = > x.free_vars > |> Array.map (fun (L(i,t)) -> > $"v{i}(_v{i})") > |> String.concat ", " > line s_typ $"__device__ > Closure{i}({constructor_args}) : {initializer_args} {{ }}" > let () = // destructor > match x.funtype with > | FT_Pointer | FT_Vanilla -> () > | FT_Closure -> line s_typ $"__device__ > ~Closure{i}() override = default;" > () > line s_typ "};" > ) > and cfun : _ -> CFunRecCuda = > cfun' (fun s_fwd s_typ s_fun x -> > let i, range = x.tag, tup_ty x.range > let domain_args_ty = closure_args x.domain 0 |> List.map (fun > (_,ty,_) -> ty) |> String.concat ", " > match x.funtype with > | FT_Vanilla -> raise_codegen_error "Regular functions do not > have a composable type in the Cuda backend. Consider explicitly converting them > to either closures or pointers using `to_closure` or `to_fptr` if you want to > pass them through boundaries." > | FT_Pointer -> line s_fwd $"typedef {range} (* > Fun{i})({domain_args_ty});" > | FT_Closure -> > line s_fwd $"struct ClosureBase{i} {{ int refc{{0}}; > __device__ virtual {range} operator()({domain_args_ty}) = 0; __device__ virtual > ~ClosureBase{i}() = default; }};" > line s_fwd $"typedef csptr<ClosureBase{i}> Fun{i};" > ) > and tup : _ -> TupleRecCuda = > tuple (fun s_fwd s_typ s_fun x -> > let name = sprintf "Tuple%i" x.tag > line s_fwd $"struct {name};" > line s_typ $"struct {name} {{" > x.tys |> Array.mapi (fun i x -> L(i,x)) |> print_ordered_args > (indent s_typ) > let concat x = String.concat ", " x > let args = x.tys |> Array.mapi (fun i x -> $"{tyv x} t{i}") > let con_init = x.tys |> Array.mapi (fun i x -> $"v{i}(t{i})") > if args.Length <> 0 then > line (indent s_typ) $"__device__ {name}() = default;" > line (indent s_typ) $"__device__ {name}({concat args}) : > {concat con_init} {{}}" > line s_typ "};" > ) > and unions : _ -> UnionRecCuda = > let inline map_iteri f x = Map.fold (fun i k v -> f i k v; i+1) 0 x > |> ignore > union (fun s_fwd s_typ s_fun x -> > let i = x.tag > line s_fwd $"struct Union{i};" // Forward declaration for the > union. > map_iteri (fun tag k v -> // The individual union cases. > line s_typ $"struct Union{i}_{tag} {{ // {k}" > // The free vars in the env. > print_ordered_args (indent s_typ) v > let () = // constructors > let s_typ = indent s_typ > let concat x = String.concat ", " x > let args = v |> Array.map (fun (L(i,x)) -> $"{tyv x} > t{i}") > let con_init = v |> Array.map (fun (L(i,x)) -> > $"v{i}(t{i})") > if v.Length <> 0 then > line s_typ $"__device__ Union{i}_{tag}({concat > args}) : {concat con_init} {{}}" > line s_typ $"__device__ Union{i}_{tag}() = delete;" > line s_typ "};" > ) x.free_vars > > line s_typ $"struct Union{i} {{" // The union definition. > let _ = // Union cases inside the union. > let s_typ = indent s_typ > line s_typ $"union {{" > let _ = > let s_typ = indent s_typ > map_iteri (fun tag (_,k) v -> line s_typ > $"Union{i}_{tag} case{tag}; // {k}") x.free_vars > line s_typ "};" > > if x.is_heap then line s_typ "int refc{0};" > if x.free_vars.Count > int max_tag then raise_codegen_error > $"Too many union cases. They should not be more than {max_tag}." > line s_typ $"unsigned char tag{{{max_tag}}};" > line s_typ $"__device__ Union{i}() {{}}" // default > constructor, the refc and tag have def value so we don't have to do anything > here. > > map_iteri (fun tag k v -> // The constructors for all the > union cases. > line s_typ $"__device__ Union{i}(Union{i}_{tag} t) : > tag({tag}), case{tag}(t) {{}} // {k}" > ) x.free_vars > > line s_typ $"__device__ Union{i}(Union{i} & x) : tag(x.tag) > {{" // copy constructor > let () = > let s_typ = indent s_typ > line s_typ "switch(x.tag){" > let () = // copy constructor cases > let s_typ = indent s_typ > map_iteri (fun tag k v -> > line s_typ $"case {tag}: new (&this->case{tag}) > Union{i}_{tag}(x.case{tag}); break; // {k}" > ) x.free_vars > line s_typ "}" > line s_typ "}" > line s_typ $"__device__ Union{i}(Union{i} && x) : tag(x.tag) > {{" // move constructor > let () = > let s_typ = indent s_typ > line s_typ "switch(x.tag){" > let () = // move constructor cases > let s_typ = indent s_typ > map_iteri (fun tag k v -> > line s_typ $"case {tag}: new (&this->case{tag}) > Union{i}_{tag}(std::move(x.case{tag})); break; // {k}" > ) x.free_vars > line s_typ "}" > line s_typ "}" > line s_typ $"__device__ Union{i} & operator=(Union{i} & x) > {{" // copy assignment operator > let () = > let s_typ = indent s_typ > line s_typ "if (this->tag == x.tag) {" > let () = > let s_typ = indent s_typ > line s_typ "switch(x.tag){" > let () = // copy assignment cases > let s_typ = indent s_typ > map_iteri (fun tag k v -> > line s_typ $"case {tag}: this->case{tag} = > x.case{tag}; break; // {k}" > ) x.free_vars > line s_typ "}" > line s_typ "} else {" > let () = > let s_typ = indent s_typ > line s_typ $"this->~Union{i}();" > line s_typ $"new (this) Union{i}{{x}};" > line s_typ "}" > line s_typ "return *this;" > line s_typ "}" > line s_typ $"__device__ Union{i} & operator=(Union{i} && x) > {{" // move assignment operator > let () = > let s_typ = indent s_typ > line s_typ "if (this->tag == x.tag) {" > let () = > let s_typ = indent s_typ > line s_typ "switch(x.tag){" > let () = // move assignment cases > let s_typ = indent s_typ > map_iteri (fun tag k v -> > line s_typ $"case {tag}: this->case{tag} = > std::move(x.case{tag}); break; // {k}" > ) x.free_vars > line s_typ "}" > line s_typ "} else {" > let () = > let s_typ = indent s_typ > line s_typ $"this->~Union{i}();" > line s_typ $"new (this) Union{i}{{std::move(x)}};" > line s_typ "}" > line s_typ "return *this;" > line s_typ "}" > line s_typ $"__device__ ~Union{i}() {{" > let () = // destructor > let s_typ = indent s_typ > line s_typ "switch(this->tag){" > let () = // destructor cases > let s_typ = indent s_typ > map_iteri (fun tag k v -> > line s_typ $"case {tag}: > this->case{tag}.~Union{i}_{tag}(); break; // {k}" > ) x.free_vars > line s_typ "}" > line s_typ $"this->tag = {max_tag};" > line s_typ "}" > line s_typ "};" > ) > and layout_tmpl is_heap name : _ -> LayoutRecCuda = > layout (fun s_fwd s_typ s_fun (x : LayoutRecCuda) -> > let name = sprintf "%s%i" name x.tag > line s_fwd $"struct {name};" > line s_typ $"struct {name} {{" > let () = > let s_typ = indent s_typ > if is_heap then line s_typ "int refc{0};" > x.free_vars |> print_ordered_args s_typ > let concat x = String.concat ", " x > let args = x.free_vars |> Array.map (fun (L(i,x)) -> $"{tyv > x} t{i}") > let con_init = x.free_vars |> Array.map (fun (L(i,x)) -> > $"v{i}(t{i})") > if args.Length <> 0 then > line s_typ $"__device__ {name}() = default;" > line s_typ $"__device__ {name}({concat args}) : {concat > con_init} {{}}" > line s_typ "};" > ) > and heap : _ -> LayoutRecCuda = layout_tmpl true "Heap" > and mut : _ -> LayoutRecCuda = layout_tmpl true "Mut" > and stack_mut : _ -> LayoutRecCuda = layout_tmpl false "StackMut" > > fun vs (x : TypedBind [[]]) -> > let ret_ty = > let er() = raise_codegen_error "The return type of the > __global__ kernel in the Cuda backend should be a void type or a record of type > {cluster_dims : {x : int; y : int; z : int}}." > match binds_last_dataCuda x with > | DRecord m when m.Count = 1 -> > match Map.tryPick (fun (_, k) v -> if k = "cluster_dims" > then Some v else None) m with > | Some(DRecord m) when m.Count = 3 -> > match > Map.tryPick (fun (_, k) v -> if k = "x" then Some v > else None) m, > Map.tryPick (fun (_, k) v -> if k = "y" then Some v > else None) m, > Map.tryPick (fun (_, k) v -> if k = "z" then Some v > else None) m > with > | Some(DSymbol x), Some(DSymbol y), Some(DSymbol z) -> > $"void __cluster_dims__({x},{y},{z})" > | Some(DV _), _, _ > | _, Some(DV _), _ > | _, _, Some(DV _) -> raise_codegen_error "All the > variables have to be known at compile time." > | _ -> er() > | _ -> er() > | DB -> "void" > | _ -> er() > let main_defs' = {text=System.Text.StringBuilder(); indent=0} > let args = vs |> Array.mapi (fun i (L(_,x)) -> $"{tyv x} v{i}") |> > String.concat ", " > line main_defs' $"extern \"C\" __global__ {ret_ty} > entry%i{main_defs.Count}(%s{args}) {{" > binds_start (indent main_defs') x > line main_defs' "}" > main_defs.Add(main_defs'.text.ToString()) > > global' $"using default_int = {prim default_env.default_int};" > global' $"using default_uint = {prim default_env.default_uint};" > global' (System.IO.File.ReadAllText(System.IO.Path.Join( > // AppDomain.CurrentDomain.BaseDirectory, > System.IO.Path.Combine (SpiralFileSystem.get_workspace_root (), > "deps/The-Spiral-Language/The Spiral Language 2"), > "reference_counting.cuh" > ))) > > ── fsharp ────────────────────────────────────────────────────────────────────── > ── [ 4.19s - diagnostics ] ───────────────────────────────────────────────────── > │ input.fsx (606,39)-(606,45) typecheck warning This and other > recursive references to the object(s) being defined will be checked for > initialization-soundness at runtime through the use of a delayed reference. This > is because you are defining one or more recursive objects, rather than recursive > functions. This warning may be suppressed by using '#nowarn "40"' or > '--nowarn:40'. > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## CodegenPython > > ── fsharp ────────────────────────────────────────────────────────────────────── > module CodegenPython = > // open System > // open System.Text > open System.Collections.Generic > > let backend_namePython = "Python" > > let litPython = function > | LitInt8 x -> sprintf "%i" x > | LitInt16 x -> sprintf "%i" x > | LitInt32 x -> sprintf "%i" x > | LitInt64 x -> sprintf "%i" x > | LitUInt8 x -> sprintf "%i" x > | LitUInt16 x -> sprintf "%i" x > | LitUInt32 x -> sprintf "%i" x > | LitUInt64 x -> sprintf "%i" x > | LitFloat32 x -> > if x = infinityf then "float('inf')" > elif x = -infinityf then "float('-inf')" > elif System.Single.IsNaN x then "float()" > else x.ToString("R") |> add_dec_point > | LitFloat64 x -> > if x = infinity then "float('inf')" > elif x = -infinity then "float('-inf')" > elif System.Double.IsNaN x then "float()" > else x.ToString("R") |> add_dec_point > | LitString x -> > let strb = System.Text.StringBuilder(x.Length+2) > strb.Append '"' |> ignore > String.iter (function > | '"' -> strb.Append "\\\"" > | '\b' -> strb.Append @"\b" > | '\t' -> strb.Append @"\t" > | '\n' -> strb.Append @"\n" > | '\r' -> strb.Append @"\r" > | '\\' -> strb.Append @"\\" > | x -> strb.Append x > >> ignore > ) x > strb.Append '"' |> ignore > strb.ToString() > | LitChar x -> > match x with > | '\b' -> @"\b" > | '\n' -> @"\n" > | '\t' -> @"\t" > | '\r' -> @"\r" > | '\\' -> @"\\" > | ''' -> @"\'" > | x -> string x > |> sprintf "'%s'" > | LitBool x -> if x then "True" else "False" > > let type_litPython = function > | YLit x -> litPython x > | YSymbol x -> x > | x -> raise_codegen_error "Compiler error: Expecting a type literal in > the macro." > > let show_w = function WV(L(i,_)) -> sprintf "v%i" i | WLit a -> litPython a > let args x = x |> Array.map (fun (L(i,_)) -> sprintf "v%i" i) |> > String.concat ", " > let primPython x = show_primt x > let cupy_ty x = > match x with > | [[|L(_,x)|]] -> > match x with > | YPrim x -> > match x with > | Int8T -> "cp.int8" > | Int16T -> "cp.int16" > | Int32T -> "cp.int32" > | Int64T -> "cp.int64" > | UInt8T -> "cp.uint8" > | UInt16T -> "cp.uint16" > | UInt32T -> "cp.uint32" > | UInt64T -> "cp.uint64" > | Float32T -> "cp.float32" > | Float64T -> "cp.float64" > | BoolT -> "cp.bool_" > | _ -> "object" > | _ -> "object" > | _ -> "object" > > type UnionRecPython = {tag : int; free_vars : Map<int * string, TyV[[]]>} > type LayoutRecPython = {tag : int; data : Data; free_vars : TyV[[]]; > free_vars_by_key : Map<int * string, TyV[[]]>} > type MethodRecPython = {tag : int; free_vars : L<Tag,Ty>[[]]; range : Ty; > body : TypedBind[[]]} > type ClosureRecPython = {tag : int; free_vars : L<Tag,Ty>[[]]; domain : Ty; > domain_args : TyV[[]]; range : Ty; body : TypedBind[[]]} > > type BindsReturnPython = > | BindsTailEnd > | BindsLocal of TyV [[]] > > let linePython x s = if s <> "" then x.text.Append(' ', x.indent).AppendLine > s |> ignore > > let codegen' backend_handler (env : PartEvalResult) (x : TypedBind [[]]) = > let fwd_dcls = ResizeArray() > let types = ResizeArray() > let functions = ResizeArray() > > let global' = > let has_added = HashSet env.globals > fun x -> if has_added.Add(x) then env.globals.Add x > > let import x = global' $"import {x}" > let from x = global' $"from {x}" > > let print is_type show r = > let s = {text=System.Text.StringBuilder(); indent=0} > show s r > let text = s.text.ToString() > if is_type then types.Add(text) else functions.Add(text) > > let union show = > let dict = Dictionary(HashIdentity.Reference) > let f (a : Union) : UnionRecPython = > let free_vars = a.Item.cases |> Map.map (fun _ -> env.ty_to_data > >> data_free_vars) > {free_vars=free_vars; tag=dict.Count} > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print true show r > r > > let layout show = > let dict' = Dictionary(HashIdentity.Structural) > let dict = Dictionary(HashIdentity.Reference) > let f x : LayoutRecPython = > match x with > | YLayout(x,_) -> > let x = env.ty_to_data x > let a, b = > match x with > | DRecord a -> let a = Map.map (fun _ -> data_free_vars) a > in a |> Map.toArray |> Array.collect snd, a > | _ -> data_free_vars x, Map.empty > {data=x; free_vars=a; free_vars_by_key=b; tag=dict'.Count} > | _ -> raise_codegen_error $"Compiler error: Expected a layout > type (5).\nGot: %s{show_ty x}" > fun x -> > let mutable dirty = false > let r = memoize dict (memoize dict' (fun x -> dirty <- true; f > x)) x > if dirty then print true show r > r > > let jp is_type f show = > let dict = Dictionary(HashIdentity.Structural) > let f x = f (x, dict.Count) > fun x -> > let mutable dirty = false > let r = memoize dict (fun x -> dirty <- true; f x) x > if dirty then print is_type show r > r > > let cupy_ty x = env.ty_to_data x |> data_free_vars |> cupy_ty > let rec binds_start (args : TyV [[]]) (s : CodegenEnv) (x : TypedBind > [[]]) = binds (refc_prepass Set.empty (Set args) x).g_decr s BindsTailEnd x > and binds g_decr (s : CodegenEnv) (ret : BindsReturnPython) (stmts : > TypedBind [[]]) = > let s_len = s.text.Length > let tup_destruct (a,b) = > if 0 < Array.length a then > let a = args a > let b = Array.map show_w (data_term_vars b) |> String.concat > ", " > sprintf "%s = %s" a b |> line s > Array.iter (fun x -> > let _ = > let f (g : Dictionary<_,_>) = match g.TryGetValue(x) with > true, x -> Seq.toArray x | _ -> [[||]] > match args (f g_decr) with "" -> () | x -> sprintf "del %s" > x |> line s > match x with > | TyLet(d,trace,a) -> > try op g_decr s (BindsLocal (data_free_vars d)) a > with :? CodegenError as e -> raise_codegen_error' trace > (e.Data0,e.Data1) > | TyLocalReturnOp(trace,a,_) -> > try op g_decr s ret a > with :? CodegenError as e -> raise_codegen_error' trace > (e.Data0,e.Data1) > | TyLocalReturnData(d,trace) -> > try match ret with > | BindsLocal l -> tup_destruct (l, d) > | BindsTailEnd -> line s $"return {tup_data' d}" > with :? CodegenError as e -> raise_codegen_error' trace > (e.Data0,e.Data1) > ) stmts > if s.text.Length = s_len then line s "pass" > and tup_data' x = > match Array.map show_w (data_term_vars x) with > | [[||]] -> "" > | [[|x|]] -> x > | args -> String.concat ", " args > and tup_data x = > match Array.map show_w (data_term_vars x) with > | [[||]] -> "None" > | [[|x|]] -> x > | args -> sprintf "(%s)" (String.concat ", " args) > and tyv x = > match x with > | YUnion a -> > match a.Item.layout with > | UHeap -> sprintf "UH%i" (uheap a).tag > | UStack -> sprintf "US%i" (ustack a).tag > | YLayout(_,lay) as a -> > match lay with > | Heap -> sprintf "Heap%i" (heap a).tag > | HeapMutable -> sprintf "Mut%i" (mut a).tag > | StackMutable -> raise_codegen_error "Compiler error: The > Python backend doesn't support stack mutable layout types." > | YMacro [[Text "backend_switch "; Type (YRecord r)]] -> > match r |> Map.tryPick (fun (_, k) v -> if k = > backend_namePython then Some v else None) with > | Some x -> tup_ty x > | None -> raise_codegen_error $"In the backend_switch, expected > a record with the '{backend_namePython}' field." > | YMacro a -> > a > |> List.map (function > | Text a -> a > | Type a -> tup_ty a > | TypeLit a -> type_litPython a > ) > |> String.concat "" > | YPrim a -> primPython a > | YArray a -> "(cp if cuda else np).ndarray" > | YFun(a,b,FT_Vanilla) -> > let a = env.ty_to_data a |> data_free_vars |> Array.map (fun > (L(_,t)) -> tyv t) |> String.concat ", " > $"Callable[[[[{a}]], {tup_ty b}]]" > | YExists -> raise_codegen_error "Existentials are not supported at > runtime. They are a compile time feature only." > | YForall -> raise_codegen_error "Foralls are not supported at > runtime. They are a compile time feature only." > | a -> raise_codegen_error $"Complier error: Type not supported in > the codegen.\nGot: %A{a}" > and tup_ty x = > match env.ty_to_data x |> data_free_vars |> Array.map (fun (L(_,t)) > -> tyv t) with > | [[||]] -> "None" > | [[|x|]] -> x > | x -> String.concat ", " x |> sprintf "Tuple[[%s]]" > and op g_decr s (ret : BindsReturnPython) a = > let return' (x : string) = > match ret with > | BindsTailEnd -> line s $"return {x}" > | BindsLocal ret -> line s (if ret.Length = 0 then x else > sprintf "%s = %s" (args ret) x) > let jp (a,b) = > let args = args b > match a with > | JPMethod(a,b) -> sprintf "method%i(%s)" (method (a,b)).tag > args > | JPClosure(a,b) -> sprintf "Closure%i(%s)" (closure (a,b)).tag > args > let layout_index i x' = > x' |> Array.map (fun (L(i',_)) -> $"v{i}.v{i'}") > |> String.concat ", " > |> return' > > match a with > | TySizeOf t -> raise_codegen_error $"The following type in `sizeof` > is not supported in the Python back end.\nGot: {show_ty t}" > | TyMacro a -> > // System.Console.WriteLine $"CodegenPython.TyMacro / a: %A{a}" > a > |> List.map (function > | CMText x when x |> SpiralSm.starts_with "$\"" -> > let x = x |> SpiralSm.replace "%A{" "{" > $"f\"{x.[[2..]]}" > | CMText x -> x > | CMTerm x -> tup_data x > | CMType x -> tup_ty x > | CMTypeLit a -> type_litPython a > ) > |> String.concat "" > |> return' > | TyIf(cond,tr,fl) -> > line s (sprintf "if %s:" (tup_data cond)) > binds g_decr (indent s) ret tr > line s "else:" > binds g_decr (indent s) ret fl > | TyJoinPoint(a,args) -> return' (jp (a, args)) > | TyBackend(a,b,c) -> return' (backend_handler (a,b,c)) > | TyWhile(a,b) -> > line s (sprintf "while %s:" (jp a)) > binds g_decr (indent s) (BindsLocal [[||]]) b > | TyDo a -> > binds g_decr s ret a > | TyIndent a -> > binds g_decr (indent s) ret a > | TyIntSwitch(L(v_i,_),on_succ,on_fail) -> > Array.iteri (fun i x -> > if i = 0 then line s $"if v{v_i} == {i}:" > else line s $"elif v{v_i} == {i}:" > binds g_decr (indent s) ret x > ) on_succ > line s "else:" > binds g_decr (indent s) ret on_fail > | TyUnionUnbox(is,x,on_succs,on_fail) -> > let case_tags = x.Item.tags > line s (sprintf "match %s:" (is |> List.map (fun (L(i,_)) -> > $"v{i}") |> String.concat ", ")) > let s = indent s > let prefix = > match x.Item.layout with > | UHeap -> sprintf "UH%i" (uheap x).tag > | UStack -> sprintf "US%i" (ustack x).tag > Map.iter (fun k (a,b) -> > let i = case_tags.[[k]] > let cases = > a |> List.map (fun a -> > let x = data_free_vars a > let g_decr' = get_default g_decr (Array.head b) (fun > () -> Set.empty) > let x,g_decr' = Array.mapFold (fun g_decr (L(i,_) as > v) -> if Set.contains v g_decr then "_", Set.remove v g_decr else sprintf "v%i" > i, g_decr) g_decr' x > g_decr.[[Array.head b]] <- g_decr' > sprintf "%s_%i(%s)" prefix i (String.concat ", " x) > ) > |> String.concat ", " > line s (sprintf "case %s: # %s" cases k) > binds g_decr (indent s) ret b > ) on_succs > line s "case t:" > match on_fail with > | Some b -> binds g_decr (indent s) ret b > | None -> line (indent s) "raise Exception(f'Pattern matching > miss. Got: {t}')" > | TyUnionBox(a,b,c') -> > let c = c'.Item > let i = c.tags.[[a]] > let vars = tup_data' b > match c.layout with > | UHeap -> sprintf "UH%i_%i(%s)" (uheap c').tag i vars > | UStack -> sprintf "US%i_%i(%s)" (ustack c').tag i vars > |> return' > | TyToLayout(a,b) -> > match b with > | YLayout(_,layout) -> > match layout with > | Heap -> sprintf "Heap%i(%s)" (heap b).tag (tup_data' a) > | HeapMutable -> sprintf "Mut%i(%s)" (mut b).tag (tup_data' > a) > | StackMutable -> raise_codegen_error "The Python backend > doesn't support stack mutable layout types." > | _ -> raise_codegen_error "Compiler error: Expected a layout > type (6)." > |> return' > | TyLayoutIndexAll(L(i,YLayout(_,lay) & a)) -> > match lay with > | Heap -> heap a > | HeapMutable -> mut a > | StackMutable -> raise_codegen_error "The Python backend > doesn't support indexing into stack mutable layout types." > |> fun x -> x.free_vars |> layout_index i > | TyLayoutIndexByKey(L(i,YLayout(_,lay) & a),key) -> > match lay with > | Heap -> heap a > | HeapMutable -> mut a > | StackMutable -> raise_codegen_error "The Python backend > doesn't support indexing into stack mutable layout types." > |> fun x -> > x.free_vars_by_key > |> Map.tryPick (fun (_, k) v -> if k = key then Some v else > None) > |> Option.iter (layout_index i) > | TyLayoutIndexAll _ | TyLayoutIndexByKey _ -> raise_codegen_error > "Compiler error: Expected the TyV in layout index to be a layout type." > | TyLayoutMutableSet(L(i,t),b,c) -> > let a = List.fold (fun s k -> > match s with > | DRecord l -> l |> Map.pick (fun (_,k') v -> if k = k' then > Some v else None) > | _ -> raise_codegen_error "Compiler error: Expected a > record.") (mut t).data b > Array.iter2 (fun (L(i',_)) b -> line s $"v{i}.v{i'} = {show_w > b}") (data_free_vars a) (data_term_vars c) > | TyArrayLiteral(a,b) -> return' <| sprintf "(cp if cuda else > np).array([[%s]],dtype=%s)" (List.map tup_data' b |> String.concat ", ") > (cupy_ty a) > | TyArrayCreate(a,b) -> return' $"(cp if cuda else > np).empty({tup_data b},dtype={cupy_ty a})" > | TyFailwith(a,b) -> line s $"raise Exception({tup_data' b})" > | TyConv(a,b) -> return' $"{tyv a}({tup_data b})" > | TyApply(L(i,_),b) -> return' $"v{i}({tup_data' b})" > | TyArrayLength(a,b) -> return' $"{tup_data b}.__len__()" > | TyStringLength(a,b) -> return' $"len({tup_data b})" > | TyOp(Global,[[DLit (LitString x)]]) -> global' x > | TyOp(op,l) -> > match op, l with > | ToPythonRecord,[[DRecord x]] -> Map.foldBack (fun k v l -> > $"'{k}': {tup_data v}" :: l) x [[]] |> String.concat ", " |> sprintf "{%s}" > | ToPythonNamedTuple,[[n;DRecord x]] -> > import "collections" > let field_names = Map.foldBack (fun k v l -> $"'{k}'" :: l) > x [[]] |> String.concat ", " > let args = Map.foldBack (fun k v l -> tup_data v :: l) x > [[]] |> String.concat ", " > $"collections.namedtuple({tup_data > n},[[{field_names}]])({args})" > | Dyn,[[a]] -> tup_data a > | TypeToVar, _ -> raise_codegen_error "The use of `` should > never appear in generated code." > | StringIndex, [[a;b]] -> sprintf "%s[[%s]]" (tup_data a) > (tup_data b) > | StringSlice, [[a;b;c]] -> sprintf "%s[[%s:%s]]" (tup_data a) > (tup_data b) (tup_data c) > | ArrayIndex, [[a;b]] -> sprintf "%s[[%s]].item()" (tup_data a) > (tup_data b) > | ArrayIndexSet, [[a;b;c]] -> > match tup_data' c with > | "" -> "pass # void array set" > | c -> sprintf "%s[[%s]] = %s" (tup_data a) (tup_data b) c > // Math > | Add, [[a;b]] -> sprintf "%s + %s" (tup_data a) (tup_data b) > | Sub, [[a;b]] -> sprintf "%s - %s" (tup_data a) (tup_data b) > | Mult, [[a;b]] -> sprintf "%s * %s" (tup_data a) (tup_data b) > | Div, [[(DV(L(_,YPrim (Float32T | Float64T))) | DLit(LitFloat32 > _ | LitFloat64 _)) & a;b]] -> sprintf "%s / %s" (tup_data a) (tup_data b) > | Div, [[a;b]] -> sprintf "%s // %s" (tup_data a) (tup_data b) > | Mod, [[a;b]] -> sprintf "%s %% %s" (tup_data a) (tup_data b) > | Pow, [[a;b]] -> sprintf "pow(%s,%s)" (tup_data a) (tup_data b) > | LT, [[a;b]] -> sprintf "%s < %s" (tup_data a) (tup_data b) > | LTE, [[a;b]] -> sprintf "%s <= %s" (tup_data a) (tup_data b) > | EQ, [[a;b]] -> sprintf "%s == %s" (tup_data a) (tup_data b) > | NEQ, [[a;b]] -> sprintf "%s != %s" (tup_data a) (tup_data b) > | GT, [[a;b]] -> sprintf "%s > %s" (tup_data a) (tup_data b) > | GTE, [[a;b]] -> sprintf "%s >= %s" (tup_data a) (tup_data b) > | BoolAnd, [[a;b]] -> sprintf "%s and %s" (tup_data a) (tup_data > b) > | BoolOr, [[a;b]] -> sprintf "%s or %s" (tup_data a) (tup_data > b) > | BitwiseAnd, [[a;b]] -> sprintf "%s & %s" (tup_data a) > (tup_data b) > | BitwiseOr, [[a;b]] -> sprintf "%s | %s" (tup_data a) (tup_data > b) > | BitwiseXor, [[a;b]] -> sprintf "%s ^ %s" (tup_data a) > (tup_data b) > | BitwiseComplement, [[a]] -> sprintf "~%s" (tup_data a) > > | ShiftLeft, [[a;b]] -> sprintf "%s << %s" (tup_data a) > (tup_data b) > | ShiftRight, [[a;b]] -> sprintf "%s >> %s" (tup_data a) > (tup_data b) > > | Neg, [[x]] -> sprintf "-%s" (tup_data x) > | Log, [[x]] -> import "math"; sprintf "math.log(%s)" (tup_data > x) > | Exp, [[x]] -> import "math"; sprintf "math.exp(%s)" (tup_data > x) > | Tanh, [[x]] -> import "math"; sprintf "math.tanh(%s)" > (tup_data x) > | Sqrt, [[x]] -> import "math"; sprintf "math.sqrt(%s)" > (tup_data x) > | Sin, [[x]] -> import "math"; sprintf "math.sin(%s)" (tup_data > x) > | Cos, [[x]] -> import "math"; sprintf "math.cos(%s)" (tup_data > x) > | NanIs, [[x]] -> import "math"; sprintf "math.isnan(%s)" > (tup_data x) > | UnionTag, [[DUnion(_,l) | DV(L(_,YUnion l)) as x]] -> sprintf > "%s.tag" (tup_data x) > | _ -> raise_codegen_error <| sprintf "Compiler error: %A with > %i args not supported" op l.Length > |> return' > and uheap : _ -> UnionRecPython = union (fun s x -> > let cases = Array.init x.free_vars.Count (fun i -> > $"\"UH{x.tag}_{i}\"") |> function [[|x|]] -> x | x -> x |> String.concat ", " |> > sprintf "Union[[%s]]" > fwd_dcls.Add $"UH{x.tag} = {cases}" > let mutable i = 0 > x.free_vars |> Map.iter (fun k a -> > line s $"class UH{x.tag}_{i}(NamedTuple): # {k}" > let s = indent s > a |> Array.iter (fun (L(i,t)) -> line s $"v{i} : {tyv t}") > line s $"tag = {i}" > i <- i+1 > ) > ) > and ustack : _ -> UnionRecPython = union (fun s x -> > let mutable i = 0 > x.free_vars |> Map.iter (fun k a -> > line s $"class US{x.tag}_{i}(NamedTuple): # {k}" > let s = indent s > a |> Array.iter (fun (L(i,t)) -> line s $"v{i} : {tyv t}") > line s $"tag = {i}" > i <- i+1 > ) > let cases = Array.init x.free_vars.Count (fun i -> $"US{x.tag}_{i}") > |> function [[|x|]] -> x | x -> x |> String.concat ", " |> sprintf "Union[[%s]]" > line s $"US{x.tag} = {cases}" > ) > and heap : _ -> LayoutRecPython = layout (fun s x -> > line s $"class Heap{x.tag}(NamedTuple):" > let s = indent s > if x.free_vars.Length = 0 then line s "pass" > else x.free_vars |> Array.iter (fun (L(i,t)) -> line s $"v{i} : {tyv > t}") > ) > and mut : _ -> LayoutRecPython = layout (fun s x -> > line s "@dataclass" > line s $"class Mut{x.tag}:" > let s = indent s > if x.free_vars.Length = 0 then line s "pass" > else x.free_vars |> Array.iter (fun (L(i,t)) -> line s $"v{i} : {tyv > t}") > ) > and method : _ -> MethodRecPython = > jp false (fun ((jp_body,key & (C(args,_))),i) -> > match (fst env.join_point_method.[[jp_body]]).[[key]] with > | Some a, Some range, _ -> {tag=i; free_vars=rdata_free_vars > args; range=range; body=a} > | _ -> raise_codegen_error "Compiler error: The method > dictionary is malformed" > ) (fun s x -> > let method_args = x.free_vars |> Array.map (fun (L(i,t)) -> > $"v{i} : {tyv t}") |> String.concat ", " > line s $"def method{x.tag}({method_args}) -> {tup_ty x.range}:" > binds_start x.free_vars (indent s) x.body > ) > and closure : _ -> ClosureRecPython = > jp true (fun ((jp_body,key & (C(args,_,fun_ty))),i) -> > match fun_ty with > | YFun(domain,range,FT_Vanilla) -> > match (fst env.join_point_closure.[[jp_body]]).[[key]] with > | Some(domain_args, body) -> {tag=i; > free_vars=rdata_free_vars args; domain=domain; domain_args=data_free_vars > domain_args; range=range; body=body} > | _ -> raise_codegen_error "Compiler error: The method > dictionary is malformed" > | YFun _ -> raise_codegen_error "Non-standard functions are not > supported in the Python backend." > | _ -> raise_codegen_error "Compiler error: Unexpected type in > the closure join point." > ) (fun s x -> > let env_args = x.free_vars |> Array.map (fun (L(i,t)) -> > $"env_v{i} : {tyv t}") |> String.concat ", " > line s $"def Closure{x.tag}({env_args}):" > let s = indent s > let inner_args = x.domain_args |> Array.map (fun (L(i,t)) -> > $"v{i} : {tyv t}") |> String.concat ", " > line s $"def inner({inner_args}) -> {tup_ty x.range}:" > let _ = > let s = indent s > if x.free_vars.Length > 0 then > let nonlocal_args = x.free_vars |> Array.map (fun > (L(i,t)) -> $"env_v{i}") |> String.concat ", " > line s $"nonlocal {nonlocal_args}" > x.free_vars |> Array.map (fun (L(i,t)) -> $"v{i} = > env_v{i}") |> String.concat "; " |> line s > binds_start x.free_vars s x.body > line s "return inner" > ) > > import "cupy as cp" > import "numpy as np" > from "dataclasses import dataclass" > from "typing import NamedTuple, Union, Callable, Tuple" > env.globals.Add "i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; > u16 = int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = > str" > env.globals.Add "cuda = False" > env.globals.Add "" > > let main = System.Text.StringBuilder() > let s = {text=main; indent=0} > > line s "def main_body():" > binds_start [[||]] (indent s) x > s.text.AppendLine() |> ignore > > line s "def main():" > line (indent s) "r = main_body()" > line (indent s) "if cuda: cp.cuda.get_current_stream().synchronize() # > This line is here so the `__trap()` calls on the kernel aren't missed." > line (indent s) "return r" > s.text.AppendLine() |> ignore > > line s "if __name__ == '__main__': result = main(); None if result is > None else print(result)" > > let program = System.Text.StringBuilder() > env.globals |> Seq.iter (fun x -> program.AppendLine(x) |> ignore) > fwd_dcls |> Seq.iter (fun x -> program.AppendLine(x) |> ignore) > types |> Seq.iter (fun x -> program.Append(x) |> ignore) > functions |> Seq.iter (fun x -> program.Append(x) |> ignore) > program.Append(main).ToString() > > let codegenPython (default_env : DefaultEnv) env x = > let cuda_kernels = System.Text.StringBuilder().AppendLine("kernel = > r\"\"\"") > let g = Dictionary(HashIdentity.Structural) > let globals, fwd_dcls, types, functions, main_defs as ars = > ResizeArray(), ResizeArray(), ResizeArray(), ResizeArray(), ResizeArray() > > let codegen = CodegenCuda.codegenCuda default_env ars env > let python_code = > codegen' (fun (jp_body,key,r') -> > let backend_name = (fst jp_body).node > match backend_name with > | "Cuda" -> > memoize g (fun (jp_body,key & (C(args,_))) -> > let args = rdata_free_vars args > match (fst env.join_point_method.[[jp_body]]).[[key]] > with > | Some a, Some _, _ -> codegen args a > | _ -> raise_codegen_error "Compiler error: The method > dictionary is malformed" > string g.Count > ) (jp_body,key) > | x -> raise_codegen_error_backend r' $"The Python + Cuda > backend does not support the {x} backend." > ) env x > > globals |> Seq.iter (fun x -> cuda_kernels.AppendLine(x) |> ignore) > fwd_dcls |> Seq.iter (fun x -> cuda_kernels.Append(x) |> ignore) > types |> Seq.iter (fun x -> cuda_kernels.Append(x) |> ignore) > functions |> Seq.iter (fun x -> cuda_kernels.Append(x) |> ignore) > main_defs |> Seq.iter (fun x -> cuda_kernels.Append(x) |> ignore) > > cuda_kernels > .AppendLine("\"\"\"") > .AppendLine(System.IO.File.ReadAllText(System.IO.Path.Join( > #if !INTERACTIVE > // AppDomain.CurrentDomain.BaseDirectory, > System.IO.Path.Combine (SpiralFileSystem.get_workspace_root (), > "deps/The-Spiral-Language/The Spiral Language 2"), > #else > System.IO.Path.Combine (SpiralFileSystem.get_workspace_root (), > "deps/The-Spiral-Language/The Spiral Language 2"), > #endif > "reference_counting.py" > ))) > .Append(python_code).ToString() > > ── fsharp ────────────────────────────────────────────────────────────────────── > ── [ 3.35s - diagnostics ] ───────────────────────────────────────────────────── > │ input.fsx (409,67)-(409,70) typecheck warning This and other > recursive references to the object(s) being defined will be checked for > initialization-soundness at runtime through the use of a delayed reference. This > is because you are defining one or more recursive objects, rather than recursive > functions. This warning may be suppressed by using '#nowarn "40"' or > '--nowarn:40'. > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## WDiff > > ── fsharp ────────────────────────────────────────────────────────────────────── > // open System > open System.IO > open System.Collections.Generic > > // Full name: Microsoft.FSharp.Core.Result<_,_>.Ok > > open FSharp.Core > > open Hopac > open Hopac.Infixes > open Hopac.Extensions > open Hopac.Stream > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### process_errors > > ── fsharp ────────────────────────────────────────────────────────────────────── > let process_errors line (ers : LineTokenErrors list) : RString list = > ers |> List.mapi (fun i l -> > let i = line + i > l |> List.map (fun (r,x) -> x, ({|line=i; character=r.from|}, {|line=i; > character=r.nearTo|})) > ) > |> List.concat > |> List.groupBy snd > |> List.map (fun (k,v) -> k, process_error (List.map fst v)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### tokenize_replace > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// Replaces the token lines and updates the errors given the edit. > let tokenize_replace (lines : _ FSharpx.Collections.PersistentVector > FSharpx.Collections.PersistentVector, errors : _ list) (edit : SpiEdit) = > let toks, ers = Array.map tokenize edit.lines |> Array.unzip > let lines = replace edit.from edit.nearTo toks lines > let errors = > let adj = edit.lines.Length - (edit.nearTo - edit.from) > errors |> List.choose (fun ((a : VSCPos,b),c as x) -> > if edit.from <= a.line && a.line < edit.nearTo then None > elif edit.nearTo <= a.line && adj <> 0 then Some (add_line_to_range > adj (a,b),c) > else Some x > ) > let errors = List.append errors (process_errors edit.from (Array.toList > ers)) > lines, errors > > type [[<ReferenceEquality>]] TokenizerState = { > lines_text : string FSharpx.Collections.PersistentVector > lines_token : LineTokens > blocks : LineTokens Block list > errors : RString list > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_tokenizer_init > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_tokenizer_init = { lines_text = > FSharpx.Collections.PersistentVector.empty; lines_token = > FSharpx.Collections.PersistentVector.empty; blocks = [[]]; errors = [[]] } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### replace' > > ── fsharp ────────────────────────────────────────────────────────────────────── > /// Immutably updates the state based on the request. Does diffing to make the > operation efficient. > /// It is possible for the server to go out of sync, in which case an error is > returned. > let replace' (state : TokenizerState) (edit : SpiEdit) = > let lines_text = replace edit.from edit.nearTo edit.lines state.lines_text > let lines_token, errors = tokenize_replace (state.lines_token, state.errors) > edit > let blocks = wdiff_block_all state.blocks (lines_token, edit.lines.Length, > edit.from, edit.nearTo) > {lines_text=lines_text; lines_token=lines_token; errors=errors; > blocks=blocks} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_tokenizer_all > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_tokenizer_all (state : TokenizerState) text = > let text = lines text > let text' = state.lines_text |> Seq.toArray > let rec loop (index,text : string [[]] as x) i = if i < min text.Length > state.lines_text.Length && index text i = index text' i then loop x (i+1) else i > let from = loop ((fun text i -> text.[[i]]),text) 0 > if from = text.Length then state else > let text = text.[[from..]] > let fromRev = loop ((fun text i -> text.[[text.Length-1-i]]),text) 0 > replace' state {|from=from; nearTo=text'.Length-fromRev; > lines=text.[[..text.Length-1-fromRev]]|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_tokenizer_edit > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_tokenizer_edit (state : TokenizerState) (edit : SpiEdit) = > if edit.nearTo <= state.lines_text.Length then Ok (replace' state edit) > else Error "The edit is out of bounds and cannot be applied. The language > server and the editor are out of sync. Try reopening the file being edited." > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### semantic_updates_apply > > ── fsharp ────────────────────────────────────────────────────────────────────── > let semantic_updates_apply (block : LineTokens) updates = > Seq.fold (fun block (c : VectorCord, l) -> > let x = > let r, x = FSharpx.Collections.PersistentVector.nthNth c.row c.col > block > let x = > match x with > | TokVar(a,_) -> TokVar(a,l) > | TokSymbol(a,_) -> TokSymbol(a,l) > | TokOperator(a,_) -> TokOperator(a,l) > | TokUnaryOperator(a,_) -> TokUnaryOperator(a,l) > | x -> failwithf "Compiler error: Cannot change the semantic > legend for the %A token." x > r, x > FSharpx.Collections.PersistentVector.updateNth c.row c.col x block > ) block updates > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### parse_block > > ── fsharp ────────────────────────────────────────────────────────────────────── > let parse_block default_env is_top_down (block : LineTokens) = > let comments, cords_tokens = > Array.init block.Length (fun line -> > let x = block.[[line]] > let comment, len = match > FSharpx.Collections.PersistentVector.tryLast x with Some (r, TokComment c) -> > Some (r, c), x.Length-1 | _ -> None, x.Length > let tokens = Array.init len (fun i -> > let r, x = x.[[i]] > {|row=line; col=i|}, (({| line=line; character=r.from |}, {| > line=line; character=r.nearTo |}), x) > ) > comment, tokens > ) > |> Array.unzip > let cords, tokens = Array.unzip (Array.concat cords_tokens) > > let semantic_updates = ResizeArray() > let env = { > tokens_cords = cords; semantic_updates = semantic_updates > comments = comments; tokens = tokens; i = ref 0; is_top_down = > is_top_down > default_env = default_env > } > {result=parseBlockParsing env; semantic_tokens=semantic_updates_apply block > semantic_updates} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_parse_init > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_parse_init is_top_down : ParserState = {is_top_down=is_top_down; > blocks=[[]]} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_parse > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_parse default_env (state : ParserState) (unparsed_blocks : LineTokens > Block list) = > let dict = Dictionary(HashIdentity.Reference) > // Offset should be ignored when memoizing the results of parsing. > List.iter (fun (a,b) -> dict.Add(a,b.block)) state.blocks > let blocks = unparsed_blocks |> List.map (fun x -> > x.block, {block=memoize dict (fun a -> Hopac.memo(Job.thunk <| fun () -> > (parse_block default_env state.is_top_down) a)) x.block; offset=x.offset} > ) > {state with blocks = blocks } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ModuleState > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ModuleState = { tokenizer : TokenizerState; bundler : BlockBundleState; > parser : ParserState } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_module_init > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_module_init is_top_down = {tokenizer = wdiff_tokenizer_init; bundler = > wdiff_block_bundle_init; parser = wdiff_parse_init is_top_down} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_module_body > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_module_body default_env state tokenizer = > if state.tokenizer = tokenizer then state else > let parser = wdiff_parse default_env state.parser tokenizer.blocks > let bundler = wdiff_block_bundle state.bundler parser > {tokenizer=tokenizer; parser=parser; bundler=bundler} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_module_edit > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_module_edit default_env (state : ModuleState) x = wdiff_tokenizer_edit > state.tokenizer x |> Result.map (wdiff_module_body default_env state) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_module_all > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_module_all default_env state x = wdiff_tokenizer_all state.tokenizer x > |> wdiff_module_body default_env state > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_module_init_all > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_module_init_all default_env is_top_down x = wdiff_module_all > default_env (wdiff_module_init is_top_down) x > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### FileState<'input,'result,'state> > > ── fsharp ────────────────────────────────────────────────────────────────────── > type [[<ReferenceEquality>]] FileState<'input,'result,'state> = { input : > 'input; result : 'result; state : 'state } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### FileFuns<'a,'b,'state> > > ── fsharp ────────────────────────────────────────────────────────────────────── > type FileFuns<'a,'b,'state> = > abstract member eval : 'state * 'a -> 'b > abstract member diff : 'state * 'b * 'a -> 'b > abstract member init : 'a -> FileState<'a,'b,'state> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TypecheckerStateValue > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TypecheckerStateValue = Bundle option * InferResult * TopEnv > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TypecheckerStatePropagated > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TypecheckerStatePropagated = (bool * TopEnv) Promise > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TypecheckerState > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TypecheckerState = FileState<PackageId * ModuleId * BlockBundleState, > TypecheckerStateValue Stream, TypecheckerStatePropagated> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### typecheck > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec typecheck (package_id,module_id,env : TopEnv) x = x >>=* function > | Cons((_,b : BlockBundleValue), ls) -> > match b.bundle with > | Some bundle -> > let x = infer package_id module_id env bundle > let adds = match x.top_env_additions with AOpen x | AInclude x -> x > let env = unionInfer adds env > Job.result (Cons((b.bundle,x,env),typecheck > (package_id,module_id,env) ls)) > | None -> > typecheck (package_id,module_id,env) ls :> _ Job > | Nil -> > Job.result Nil > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### diff > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec diff (package_id,module_id,env) (result,input : BlockBundleState) = > let tc () = typecheck (package_id,module_id,env) input > if Promise.Now.isFulfilled result then > input >>** fun input -> > match Promise.Now.get result,input with > | Cons((b',_,env as x),next), Cons((_,b),bs) when b' = b.bundle -> > Promise.Now.withValue (Cons(x,diff (package_id,module_id,env) (next,bs))) > | _ -> tc() > else tc() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### funs_file_tc > > ── fsharp ────────────────────────────────────────────────────────────────────── > let funs_file_tc = {new FileFuns<PackageId * ModuleId * BlockBundleState, > TypecheckerStateValue Stream, TypecheckerStatePropagated> with > member _.eval(state,(pid,mid,x)) = > state >>=* fun (_,env) -> > typecheck (pid,mid,env) x > member _.diff(state,b,(pid,mid,a)) = > state >>=* fun (_,env) -> diff (pid,mid,env) (b,a) > member _.init x = { > input = x > result = Promise.Now.never() > state = Promise.Now.never() > } > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_file_update_state > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_file_update_state (funs : FileFuns<'a,'b,'state>) (state : > FileState<'a,'b,'state>) (x : 'state) = > if state.state = x then state else {state with state=x; > result=funs.eval(x,state.input)} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_file_update_input > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_file_update_input (funs : FileFuns<'a,'b,'state>) (state : > FileState<'a,'b,'state>) (x : 'a) = > if state.input = x then state else {state with input=x; > result=funs.diff(state.state,state.result,x)} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_file > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_file (funs : FileFuns<'a,'b,'state>) (state : FileState<'a,'b,'state>) > (a,b) = > if state.state = a then wdiff_file_update_input funs state b else {state=a; > input=b; result=funs.eval(a,b)} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjFilesTree > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ProjFilesTree = > | File of module_id: ModuleId * path: string * name: string option > | Directory of dir_id: DirId * name: string * ProjFilesTree list > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjFiles > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ProjFiles = { tree : ProjFilesTree list; num_dirs : int; num_files : int } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjFileFuns<'a,'state> > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ProjFileFuns<'a,'state> = > abstract member file : string option * 'state * 'a -> 'a * 'state > abstract member union : 'state * 'state -> 'state > abstract member in_module : string * 'state -> 'state > abstract member default' : DefaultEnv -> 'state > abstract member empty : 'state > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjFilesState<'a,'state> > > ── fsharp ────────────────────────────────────────────────────────────────────── > type [[<ReferenceEquality>]] ProjFilesState<'a,'state> = { > init : 'state > uids_file : ('a * 'state) [[]] > uids_directory : 'state [[]] > files : ProjFiles > result : 'state > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### proj_files_diff > > ── fsharp ────────────────────────────────────────────────────────────────────── > let proj_files_diff (uids_file : ('a * 'b) [[]], uids_directory : 'b [[]], > files) (uids, files') = > let uids_file' = Array.zeroCreate (Array.length uids) > let uids_directory' = Array.zeroCreate files'.num_dirs > // Ref equality is done first for performance. Most of the time the strings > will be the same. > let eq a b = System.Object.ReferenceEquals(a,b) || a = b > let rec loop = function > | File(mid,path,name), File(mid',path',name') when mid = mid' && eq path > path' && eq name name' -> > let x = uids_file.[[mid]] > if uids.[[mid]] = fst x then uids_file'.[[mid]] <- x; true else > false > | Directory(uid,name,l), Directory(uid',name',l') when uid = uid' && eq > name name' && list (l,l') -> > uids_directory'.[[uid]] <- uids_directory.[[uid]]; true > | _ -> false > and list = function > | x :: xs, y :: ys -> loop (x,y) && list (xs,ys) > | _ -> false > if list (files.tree, files'.tree) then None else Some > (uids_file',uids_directory') > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### proj_files > > ── fsharp ────────────────────────────────────────────────────────────────────── > let proj_files (funs : ProjFileFuns<'a,'state>) uids_file uids_directory uids s > l = > let inline memo (uids : _ [[]]) uid f = > let x = uids.[[uid]] > if isNull (box x) then let x = f() in uids.[[uid]] <- x; x > else x > let rec loop state = function > | File(mid,_,name) -> memo uids_file mid (fun () -> > funs.file(name,state,Array.get uids mid)) |> snd > | Directory(uid,name,l) -> memo uids_directory uid (fun () -> > funs.in_module(name,list state l)) > and list s l = > List.fold (fun (empty,big) x -> > let small = loop big x > funs.union(small,empty), funs.union(small,big) > ) (funs.empty, s) l |> fst > list s l.tree > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_proj_files_update_files > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_proj_files_update_files (funs : ProjFileFuns<'a,'state>) (state : > ProjFilesState<'a,'state >) (uids,files : ProjFiles) = > match proj_files_diff (state.uids_file,state.uids_directory,state.files) > (uids,files) with > | Some (uids_file, uids_directory) -> {state with files=files; > uids_file=uids_file; uids_directory=uids_directory; result=proj_files funs > uids_file uids_directory uids state.init files} > | None -> state > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_proj_files_update_packages > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_proj_files_update_packages (funs : ProjFileFuns<'a,'state>) (state : > ProjFilesState<'a,'state >) (init : 'state) = > if state.init = init then state else > let uids_file, uids_directory = Array.zeroCreate state.uids_file.Length, > Array.zeroCreate state.uids_directory.Length > let uids = Array.map fst state.uids_file > {state with init=init; uids_file=uids_file; uids_directory=uids_directory; > result=proj_files funs uids_file uids_directory uids init state.files} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_proj_files > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_proj_files (funs : ProjFileFuns<'a,'state>) (state : > ProjFilesState<'a,'state >) (init,(uids,files)) = > if state.init = init then wdiff_proj_files_update_files funs state > (uids,files) > else > let uids_file, uids_directory = Array.zeroCreate files.num_files, > Array.zeroCreate files.num_dirs > {files=files; init=init; uids_file=uids_file; > uids_directory=uids_directory; result=proj_files funs uids_file uids_directory > uids init files} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### typechecker_results_summary > > ── fsharp ────────────────────────────────────────────────────────────────────── > let typechecker_results_summary l = > Stream.foldFun (fun (has_error,big) (_,x : InferResult,_) -> > has_error || List.isEmpty x.errors = false, > match x.top_env_additions with > | AOpen _ -> big > | AInclude small -> unionInfer small big > ) (false,top_env_emptyInfer) l > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### funs_proj_file_tc > > ── fsharp ────────────────────────────────────────────────────────────────────── > let funs_proj_file_tc = {new > ProjFileFuns<TypecheckerState,TypecheckerStatePropagated> with > member _.file(name,state,x) = > let x = wdiff_file_update_state funs_file_tc x state > let env = > typechecker_results_summary x.result >>-* fun (has_error,env) -> > has_error, match name with None -> env | Some name -> in_moduleInfer > name env > x,env > member _.union(small,big) = small >>=* fun small -> big >>- fun big -> fst > small || fst big, unionInfer (snd small) (snd big) > member _.in_module(name,small) = small >>-* fun (has_error,env) -> > has_error, in_moduleInfer name env > member _.default' default_env = Promise.Now.withValue > (false,top_env_defaultInfer default_env) > member _.empty = Promise.Now.withValue (false,top_env_emptyInfer) > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PackageEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PackageEnv = { > nominals_aux : Map<PackageId,Map<GlobalId, {|name : string; kind : TT|}>> > nominals : Map<PackageId,Map<GlobalId, {|vars : Var list; body : T|}>> > prototypes_instances : Map<PackageId,Map<GlobalId * GlobalId, Constraint Set > list>> > prototypes : Map<PackageId,Map<GlobalId, {|name : string; signature : T; > kind : TT|}>> > ty : Map<string,T> > term : Map<string,T> > constraints : Map<string,ConstraintOrModule> > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### union > > ── fsharp ────────────────────────────────────────────────────────────────────── > let union small big = { > nominals_aux = Map.foldBack Map.add small.nominals_aux big.nominals_aux > nominals = Map.foldBack Map.add small.nominals big.nominals > prototypes_instances = Map.foldBack Map.add small.prototypes_instances > big.prototypes_instances > prototypes = Map.foldBack Map.add small.prototypes big.prototypes > ty = Map.foldBack Map.add small.ty big.ty > term = Map.foldBack Map.add small.term big.term > constraints = Map.foldBack Map.add small.constraints big.constraints > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### in_moduleWDiff > > ── fsharp ────────────────────────────────────────────────────────────────────── > let in_moduleWDiff m (a : PackageEnv) = > {a with > ty = Map.add m (TyModule a.ty) Map.empty > term = Map.add m (TyModule a.term) Map.empty > constraints = Map.add m (M a.constraints) Map.empty > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### package_to_file > > ── fsharp ────────────────────────────────────────────────────────────────────── > let package_to_file (x : PackageEnv) = { > nominals_next_tag = 0 > nominals_aux = Map.foldBack (fun _ -> Map.foldBack Map.add) x.nominals_aux > Map.empty > nominals = Map.foldBack (fun _ -> Map.foldBack Map.add) x.nominals Map.empty > prototypes_next_tag = 0 > prototypes_instances = Map.foldBack (fun _ -> Map.foldBack Map.add) > x.prototypes_instances Map.empty > prototypes = Map.foldBack (fun _ -> Map.foldBack Map.add) x.prototypes > Map.empty > ty = x.ty > term = x.term > constraints = x.constraints > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_file_to_package > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_file_to_package package_id (small : TopEnv) (big : PackageEnv): > PackageEnv = { > nominals_aux = Map.add package_id small.nominals_aux big.nominals_aux > nominals = Map.add package_id small.nominals big.nominals > prototypes_instances = Map.add package_id small.prototypes_instances > big.prototypes_instances > prototypes = Map.add package_id small.prototypes big.prototypes > ty = small.ty > term = small.term > constraints = small.constraints > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### package_env_empty > > ── fsharp ────────────────────────────────────────────────────────────────────── > let package_env_empty = { > nominals_aux = Map.empty > nominals = Map.empty > prototypes_instances = Map.empty > prototypes = Map.empty > ty = Map.empty > term = Map.empty > constraints = Map.empty > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### package_env_default > > ── fsharp ────────────────────────────────────────────────────────────────────── > let package_env_default default_env = > let x = top_env_defaultInfer default_env > {package_env_empty with ty = x.ty; term = x.term; constraints = > x.constraints} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjPackagesState<'a> > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ProjPackagesState<'a> = { > packages : (string option * 'a) list > result : 'a > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjState<'file_inputs,'files,'packages> > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ProjState<'file_inputs,'files,'packages> = { > package_id : PackageId > packages : 'packages ProjPackagesState > files : ProjFilesState<'file_inputs,'files> > result : 'packages > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TypecheckerStateTop > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TypecheckerStateTop = (bool * PackageEnv) Promise > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjStateTC > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ProjStateTC = > ProjState<TypecheckerState,TypecheckerStatePropagated,TypecheckerStateTop> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjEnvTC > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ProjEnvTC = Map<PackageId,ProjStateTC> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjPackageFuns<'file,'package> > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ProjPackageFuns<'file,'package> = > abstract member unions : DefaultEnv -> (string option * 'package) list -> > 'package > abstract member union : 'package * 'package -> 'package > abstract member in_module : string * 'package -> 'package > abstract member package_to_file : 'package -> 'file > abstract member add_file_to_package : PackageId * 'file * 'package -> > 'package > abstract member default' : DefaultEnv -> 'package > abstract member empty : 'package > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### funs_proj_package_tc > > ── fsharp ────────────────────────────────────────────────────────────────────── > let funs_proj_package_tc = {new > ProjPackageFuns<TypecheckerStatePropagated,TypecheckerStateTop> with > member funs.unions default_env l = > let f = function Some name, small -> funs.in_module(name,small) | None, > small -> small > List.fold (fun big x -> funs.union(f x,big)) (funs.default' default_env) > l > member _.union(small,big) = > Job.delay <| fun () -> > Hopac.queueIgnore big > small >>= fun a -> > big >>- fun b -> > fst a || fst b, union (snd a) (snd b) > |> Hopac.memo > member _.in_module(name,x) = x >>-* fun (has_error,env) -> has_error, > in_moduleWDiff name env > member _.package_to_file(x) = x >>-* fun (has_error,env) -> has_error, > package_to_file env > member _.add_file_to_package(pid,a,b) = > a >>=* fun (has_error,env) -> > b >>-* fun (has_error',env') -> > has_error || has_error', add_file_to_package pid env env' > member _.default' default_env = Promise.Now.withValue (false, > package_env_default default_env) > member _.empty = Promise.Now.withValue (false, package_env_empty) > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_proj_init > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_proj_init default_env (funs_packages : > ProjPackageFuns<'file,'package>) (funs_files : ProjFileFuns<'file_input,'file>) > package_id : ProjState<'file_input,'file,'package> = > let packages = { packages = [[]]; result = funs_packages.default' > default_env} > let files = { > files={tree=[[]]; num_dirs=0; num_files=0} > uids_file=[[||]]; uids_directory=[[||]] > init=funs_files.default' default_env; result=funs_files.empty > } > let result = funs_packages.empty > { package_id = package_id; packages = packages; files = files; result = > result} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_proj_packages > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_proj_packages default_env (funs : ProjPackageFuns<_,'a>) (state : 'a > ProjPackagesState) x = > if state.packages = x then state else {packages = x; result = funs.unions > default_env x } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_proj_update_packages > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_proj_update_packages default_env funs_packages funs_files (state : > ProjState<'a,'b,'state>) x = > let packages = wdiff_proj_packages default_env funs_packages state.packages > x > if state.packages = packages then state else > let files = wdiff_proj_files_update_packages funs_files state.files > (funs_packages.package_to_file(packages.result)) > let result = > funs_packages.add_file_to_package(state.package_id,files.result,packages.result) > {state with packages=packages; files=files; result=result} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_proj_update_files > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_proj_update_files (funs_packages : ProjPackageFuns<_,_>) funs_files > (state : ProjState<'a,'b,'state>) x = > let files = wdiff_proj_files_update_files funs_files state.files x > if state.files = files then state else > let result = > funs_packages.add_file_to_package(state.package_id,files.result,state.packages.r > esult) > {state with files=files; result=result} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_proj > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_proj default_env (funs_packages : ProjPackageFuns<_,_>) funs_files > (state : ProjState<'file_input,'file,'state>) (packages,files) = > let packages = wdiff_proj_packages default_env funs_packages state.packages > packages > if state.packages = packages then wdiff_proj_update_files funs_packages > funs_files state files > else > let files = wdiff_proj_files funs_files state.files > (funs_packages.package_to_file(packages.result),files) > let result = > funs_packages.add_file_to_package(state.package_id,files.result,packages.result) > {state with packages=packages; files=files; result=result} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjEnvUpdate<'a> > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ProjEnvUpdate<'a> = > | UpdatePackageModule of PackageId * (string option * PackageId) list * ('a > [[]] * ProjFiles) > | UpdatePackage of PackageId * (string option * PackageId) list > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### map_packages > > ── fsharp ────────────────────────────────────────────────────────────────────── > let map_packages s packages = packages |> List.map (fun (a,b) -> a, (Map.find b > s).result) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_projenv > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_projenv default_env funs_packages funs_files (s : > Map<PackageId,ProjState<'a,'b,'state>>) l = > List.fold (fun s -> function > | UpdatePackageModule(uid,packages,files) -> Map.add uid (wdiff_proj > default_env funs_packages funs_files s.[[uid]] (map_packages s packages,files)) > s > | UpdatePackage(uid,packages) -> Map.add uid (wdiff_proj_update_packages > default_env funs_packages funs_files s.[[uid]] (map_packages s packages)) s > ) s l > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## WDiffPrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Hopac > open Hopac.Infixes > open Hopac.Extensions > open Hopac.Stream > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PrepassStateValue > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PrepassStateValue = InferResult * PrepassTopEnv AdditionType * > PrepassTopEnv > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PrepassStatePropagated > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PrepassStatePropagated = PrepassTopEnv Promise > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PrepassState > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PrepassState = FileState<PackageId * ModuleId * string * > TypecheckerStateValue Stream, PrepassStateValue Stream, PrepassStatePropagated> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### prepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec prepass (package_id,module_id,path,env) = function > | Cons((_,r,_) : TypecheckerStateValue, ls) -> > r.filled_top >>- fun filled_top -> > let x = (prepassPrepass package_id module_id path env).filled_top > filled_top > let adds = match x with AOpen x | AInclude x -> x > let env = unionPrepass adds env > Cons((r,x,env),ls >>=* prepass (package_id,module_id,path,env)) > | Nil -> > Job.result Nil > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### diffWDiffPrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec diffWDiffPrepass (package_id,module_id,path,env) (result,input : > TypecheckerStateValue Stream) = > input >>** fun input -> > let tc () = prepass (package_id,module_id,path,env) input |> Hopac.memo > if Promise.Now.isFulfilled result then > match Promise.Now.get result,input with > | Cons((b',_,env as x),next), Cons((_,b,_),bs) when b' = b -> > Cons(x,diffWDiffPrepass (package_id,module_id,path,env) (next,bs)) |> > Promise.Now.withValue > | _ -> tc() > else tc() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### funs_file_prepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let funs_file_prepass = {new FileFuns<PackageId * ModuleId * string * > TypecheckerStateValue Stream, PrepassStateValue Stream, PrepassStatePropagated> > with > member _.eval(state,(pid,mid,path,x)) = > state >>=* fun env -> > x >>= prepass (pid,mid,path,env) > member _.diff(state,b,(pid,mid,path,a)) = > state >>=* fun env -> diffWDiffPrepass (pid,mid,path,env) (b,a) > member _.init x = { > input = x > result = Promise.Now.never() > state = Promise.Now.never() > } > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### prepass_results_summary > > ── fsharp ────────────────────────────────────────────────────────────────────── > let prepass_results_summary l = > Stream.foldFun (fun big (_,x,_) -> > match x with > | AOpen _ -> big > | AInclude small -> unionPrepass small big > ) (top_env_emptyPrepass) l > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### funs_proj_file_prepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let funs_proj_file_prepass = {new > ProjFileFuns<PrepassState,PrepassStatePropagated> with > member _.file(name,state,x) = > let x = wdiff_file_update_state funs_file_prepass x state > let env = > prepass_results_summary x.result >>-* fun env -> > match name with None -> env | Some name -> in_modulePrepass name env > x,env > member _.union(small,big) = small >>=* fun small -> big >>- fun big -> > unionPrepass small big > member _.in_module(name,small) = small >>-* in_modulePrepass name > member _.default' default_env = Promise.Now.withValue > (top_env_defaultPrepass default_env) > member _.empty = Promise.Now.withValue top_env_emptyPrepass > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### PrepassPackageEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type PrepassPackageEnv = { > prototypes_instances : Map<int, Map<GlobalId * GlobalId,E>> > nominals : Map<int, Map<GlobalId,{|body : TPrepass; name : string|}>> > term : Map<string,E> > ty : Map<string,TPrepass> > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### unionWDiffPrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let unionWDiffPrepass small big = { > prototypes_instances = Map.foldBack Map.add small.prototypes_instances > big.prototypes_instances > nominals = Map.foldBack Map.add small.nominals big.nominals > term = Map.foldBack Map.add small.term big.term > ty = Map.foldBack Map.add small.ty big.ty > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### in_module > > ── fsharp ────────────────────────────────────────────────────────────────────── > let in_module m (a : PrepassPackageEnv) = > {a with > ty = Map.add m (TModule a.ty) Map.empty > term = Map.add m (EModule a.term) Map.empty > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### package_env_emptyWDiffPrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let package_env_emptyWDiffPrepass = { > prototypes_instances = Map.empty > nominals = Map.empty > term = Map.empty > ty = Map.empty > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### package_to_fileWDiffPrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let package_to_fileWDiffPrepass (x : PrepassPackageEnv) = { > nominals_next_tag = 0 > nominals = Map.foldBack (fun _ -> Map.foldBack Map.add) x.nominals Map.empty > prototypes_next_tag = 0 > prototypes_instances = Map.foldBack (fun _ -> Map.foldBack Map.add) > x.prototypes_instances Map.empty > ty = x.ty > term = x.term > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_file_to_packageWDiffPrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_file_to_packageWDiffPrepass package_id (small : PrepassTopEnv) (big : > PrepassPackageEnv): PrepassPackageEnv = { > nominals = Map.add package_id small.nominals big.nominals > prototypes_instances = Map.add package_id small.prototypes_instances > big.prototypes_instances > ty = small.ty > term = small.term > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### package_env_defaultWDiffPrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let package_env_defaultWDiffPrepass default_env = { > package_env_emptyWDiffPrepass with ty = (top_env_defaultPrepass default_env).ty > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjStatePrepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ProjStatePrepass = > ProjState<PrepassState,PrepassStatePropagated,PrepassPackageEnv Promise> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### funs_proj_package_prepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let funs_proj_package_prepass = {new > ProjPackageFuns<PrepassStatePropagated,PrepassPackageEnv Promise> with > member funs.unions default_env l = > let f = function Some name, small -> funs.in_module(name,small) | None, > small -> small > List.fold (fun big x -> funs.union(f x,big)) (funs.default' default_env) > l > member _.union(small,big) = > Job.delay <| fun () -> > Hopac.queueIgnore big > small >>= fun a -> big >>- unionWDiffPrepass a > |> Hopac.memo > member _.in_module(name,x) = x >>-* fun env -> in_module name env > member _.package_to_file(x) = x >>-* package_to_fileWDiffPrepass > member _.add_file_to_package(pid,a,b) = > a >>=* fun env -> > b >>-* add_file_to_packageWDiffPrepass pid env > member _.default' default_env = Promise.Now.withValue > (package_env_defaultWDiffPrepass default_env) > member _.empty = Promise.Now.withValue package_env_emptyWDiffPrepass > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## SpiProj > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > dard2.1/FSharp.Control.AsyncSeq.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > 0/System.Reactive.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > netstandard2.0/System.Reactive.Linq.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > // Everything that deals with Spiral project files themselves goes here > open FParsec > // open Common > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### RawFileHierarchy > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RawFileHierarchy = > | Directory of VSCRange * RString * RawFileHierarchy list > | File of VSCRange * RString * is_top_down : bool * is_include : bool > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ConfigResumableError > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ConfigResumableError = > | DuplicateFiles of VSCRange [[]] [[]] > | DuplicateRecordFields of VSCRange [[]] [[]] > | MissingNecessaryRecordFields of string [[]] * VSCRange > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ConfigFatalError > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ConfigFatalError = > | Tabs of VSCRange [[]] > | ParserError of string * VSCRange > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ConfigException > > ── fsharp ────────────────────────────────────────────────────────────────────── > exception ConfigException of ConfigFatalError > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### spaces_template > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec spaces_template s = (spaces >>. optional (followedByString "//" >>. > skipRestOfLine true >>. spaces_template)) s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### spacesSpiProj > > ── fsharp ────────────────────────────────────────────────────────────────────── > let spacesSpiProj s = spaces_template s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### raise' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let raise' x = raise (ConfigException x) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### raise_if_not_empty > > ── fsharp ────────────────────────────────────────────────────────────────────── > let raise_if_not_empty exn l = if Array.isEmpty l = false then raise' (exn l) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_to_exception_list' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_to_exception_list' (p: CharStream<ResizeArray<ConfigResumableError>>) = > p.State.UserState.Add > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### add_to_exception_list > > ── fsharp ────────────────────────────────────────────────────────────────────── > let add_to_exception_list (p: CharStream<ResizeArray<ConfigResumableError>>) exn > l = if Array.isEmpty l = false then p.State.UserState.Add (exn l) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### column > > ── fsharp ────────────────────────────────────────────────────────────────────── > let column (p : CharStream<_>) = p.Column > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### pos > > ── fsharp ────────────────────────────────────────────────────────────────────── > let pos (p : CharStream<_>) : VSCPos = {|line=int p.Line - 1; character=int > p.Column - 1|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### pos' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let pos' p = Reply(pos p) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### rangeSpiProj > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rangeSpiProj f p = pipe3 pos' f pos' (fun a b c -> ((a, c) : VSCRange), b) p > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_small_var_char_startingSpiProj > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_small_var_char_startingSpiProj c = isAsciiLower c > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_var_charSpiProj > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_var_charSpiProj c = isAsciiLetter c || c = '_' || c = ''' || isDigit c > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### file' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let file' p = many1Satisfy2L is_small_var_char_startingSpiProj > is_var_charSpiProj "lowercase variable name" p > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### fileSpiProj > > ── fsharp ────────────────────────────────────────────────────────────────────── > let fileSpiProj p = (rangeSpiProj file' .>> spacesSpiProj) p > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### file_verify > > ── fsharp ────────────────────────────────────────────────────────────────────── > let file_verify p = (skipMany1Satisfy2L is_small_var_char_startingSpiProj > is_var_charSpiProj "lowercase variable name" .>> spacesSpiProj .>> eof) p > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### file_hierarchy > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec file_hierarchy p = > let i = column p > let expr p = if i = column p then file_or_directory p else > Reply(ReplyStatus.Error,expected "file or directory on the same or greater > indentation as the first one") > (many expr |>> fun l -> > let _ = > l |> List.toArray > |> Array.choose (function | File(_,(a,b),_,_) -> Some (b,a) | _ -> > None) > |> Array.groupBy fst > |> Array.choose (fun (a,b) -> if b.Length > 1 then Some (Array.map > snd b) else None) > |> add_to_exception_list p DuplicateFiles > l > ) p > > and file_or_directory p = > let i = column p > let file_hierarchy p = if i < column p then file_hierarchy p else > Reply([[]]) > (rangeSpiProj (rangeSpiProj file' >>= fun (r,name) p -> > let adjust_range ((a,b) : VSCRange) : VSCRange = if b.character < > a.character then a,{|line=b.line-1; character=System.Int32.MaxValue|} else a,b > let x = p.Peek2() > match x.Char0, x.Char1 with > | '/',_ -> p.Skip(); (spacesSpiProj >>. file_hierarchy |>> fun files r' > -> Directory(adjust_range r',(r,name),files)) p > | '-',_ -> p.Skip(); (spacesSpiProj >>% fun r' -> File(adjust_range > r',(r,name),true,true)) p > | '*','-' -> p.Skip(2); (spacesSpiProj >>% fun r' -> File(adjust_range > r',(r,name),false,true)) p > | '*',_ -> p.Skip(); (spacesSpiProj >>% fun r' -> File(adjust_range > r',(r,name),false,false)) p > | _ -> (spacesSpiProj >>% fun r' -> File(adjust_range > r',(r,name),true,false)) p > ) > |>> fun (r',f) -> f r') p > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### RawSchemaPackages > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RawSchemaPackages = {range : VSCRange; name : string; is_in_compiler_dir : > bool; is_include : bool} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### packages > > ── fsharp ────────────────────────────────────────────────────────────────────── > let packages p = > let i = column p > let file = rangeSpiProj (((skipChar '|' >>% true) <|>% false) .>>. file') > >>= fun (r,(is_in_compiler_dir,name)) p -> > match p.Peek() with > | '-' -> p.Skip(); (spacesSpiProj >>% {range=r; name=name; > is_in_compiler_dir=is_in_compiler_dir; is_include=true}) p > | _ -> (spacesSpiProj >>% {range=r; name=name; > is_in_compiler_dir=is_in_compiler_dir; is_include=false}) p > let file p = if i <= column p then file p else > Reply(ReplyStatus.Error,expected "directory on the same or greater indentation > as the first one") > many file p > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### tab_positions > > ── fsharp ────────────────────────────────────────────────────────────────────── > let tab_positions (str : string): VSCRange [[]] = > let mutable line = -1 > lines str |> Array.choose (fun x -> > line <- line + 1 > let x = {|line=line; character=x.IndexOf("\t")|} > if x.character <> -1 then Some(x,{|x with character=x.character+1|}) > else None > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### record_reduce > > ── fsharp ────────────────────────────────────────────────────────────────────── > let record_reduce (field: Parser<'schema -> 'schema, _>) s p = > let record_body p = > let i = column p > let indent expr p = if i = column p then expr p else > Reply(ReplyStatus.Error,expected "record field on the same indentation as the > first one") > many (indent field) p > (rangeSpiProj record_body |>> fun (r,l) -> r, List.fold (|>) s l) p > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### record_field > > ── fsharp ────────────────────────────────────────────────────────────────────── > let record_field (name, p) = > (skipString name >>. skipChar ':' >>. spacesSpiProj >>. rangeSpiProj p) > |>> (fun (r,f) (s,l) -> f s, (r, name) :: l) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### record > > ── fsharp ────────────────────────────────────────────────────────────────────── > let record fields fields_necessary schema = > let fields = choice (List.map record_field fields) > record_reduce fields (schema, [[]]) >>= fun (range,(schema,l)) p -> > let l = List.toArray l > let _ = > let names = Array.map snd l > Set fields_necessary - Set names > |> Set.toArray > |> add_to_exception_list p (fun fields -> > MissingNecessaryRecordFields(fields,range)) > let _ = > Array.groupBy snd l > |> Array.choose (fun (k, v) -> if v.Length > 1 then Some (Array.map > fst v) else None) > |> add_to_exception_list p DuplicateRecordFields > > Reply(schema) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### RawSchema > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RawSchema = { > name : RString option > version : RString option > moduleDir : RString option > modules : RawFileHierarchy list > packageDir : RString option > packages : RawSchemaPackages list > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### schema_def > > ── fsharp ────────────────────────────────────────────────────────────────────── > let schema_def: RawSchema = { > name=None > version=None > moduleDir=None > modules=[[]] > packageDir=None > packages=[[]] > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ConfigError > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ConfigError = ResumableError of ConfigResumableError [[]] | FatalError of > ConfigFatalError > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### config > > ── fsharp ────────────────────────────────────────────────────────────────────── > let config text = > try > let _ = tab_positions text |> raise_if_not_empty Tabs > > let directory p = (rangeSpiProj (restOfLine false) .>> spacesSpiProj |>> > fun (r,x) -> Some(r,x.Trim())) p > > let fields = [[ > "version", rangeSpiProj (restOfLine true .>> spacesSpiProj) |>> fun > (r,x) s -> {s with version=Some (r,x.TrimEnd())} > "name", fileSpiProj |>> fun x s -> {s with name=Some x} > "moduleDir", directory |>> fun x s -> {s with moduleDir=x} > "modules", file_hierarchy |>> fun x s -> {s with modules=x} > "packageDir", directory |>> fun x s -> {s with packageDir=x} > "packages", packages |>> fun x s -> {s with packages=x} > ]] > let necessary = [[]] > > match runParserOnString (spacesSpiProj >>. record fields necessary > schema_def .>> eof) (ResizeArray()) "spiral.config" text with > | Success(a,userstate,_) -> > if userstate.Count > 0 then userstate.ToArray() |> ResumableError |> > Result.Error else Result.Ok a > | Failure(messages,error,_) -> > let x = {|line=int error.Position.Line - 1; character=int > error.Position.Column - 1|} > ParserError(messages, (x,{|x with character=x.character+1|})) |> > FatalError |> Result.Error > with > | :? ConfigException as e -> e.Data0 |> FatalError |> Result.Error > > |> Result.mapError (fun x -> > let fatal_error = function > | Tabs l -> l |> Array.map (fun r -> r, "Tab not allowed.") > | ParserError(x,r) -> [[|r, (lines x).[[3..]] |> String.concat > "\n"|]] > let inline duplicate er = Array.collect (fun l -> let er = er > (Array.length l) in Array.map (fun r -> r, er) l) > let resumable_error = function > | DuplicateFiles l -> duplicate (sprintf "Duplicate name. Count: > %i") l > | DuplicateRecordFields l -> duplicate (sprintf "Duplicate record > field. Count: %i") l > | MissingNecessaryRecordFields (l,r) -> [[|r, sprintf "Record is > missing the fields: %s" (String.concat ", " l)|]] > match x with > | ResumableError x -> Array.collect resumable_error x > | FatalError x -> fatal_error x > |> Array.toList > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### FileHierarchy > > ── fsharp ────────────────────────────────────────────────────────────────────── > type FileHierarchy = > | Directory of VSCRange * path: RString * name : string * FileHierarchy list > | File of VSCRange * path: RString * string option > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SchemaPackages > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SchemaPackages = {dir : RString; name : string option} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Schema > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Schema = { > moduleDir : VSCRange option * string > modules : FileHierarchy list > packageDir : VSCRange option * string > packages : SchemaPackages list > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SchemaException > > ── fsharp ────────────────────────────────────────────────────────────────────── > exception SchemaException of RString > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SchemaResult > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SchemaResult = Result<Schema,RString list> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### schema > > ── fsharp ────────────────────────────────────────────────────────────────────── > let schema (pdir,text) : SchemaResult = config text |> Result.bind (fun x -> > try > let combine a (r,b) = > try > Path.Combine(a,b) > |> Path.GetFullPath > |> fun result -> > let result' = result |> SpiralFileSystem.standardize_path > // trace Verbose (fun () -> $"""SpiProj.schema.combine / a: > {a} / b: {b} / result: {result |> SpiralSm.replace "\\" "|"} / result': > {result'}""") _locals > result' > with e -> > raise (SchemaException(r,e.Message)) > let module_dir = > match x.moduleDir with > | Some(r,_ as x) -> Some r, combine pdir x > | None -> None, pdir > let package_dir = > match x.packageDir with > | Some(r,_ as x) -> Some r, combine pdir x > | None -> None, Path.Combine(pdir,"..") |> Path.GetFullPath > // trace Verbose (fun () -> $"""SpiProj.schema / pdir: {pdir} / > module_dir: {module_dir |> snd} / package_dir: {package_dir |> snd |> > SpiralSm.replace "\\" "|"}""") _locals > let modules = > let rec loop prefix = function > | RawFileHierarchy.Directory(r,(r',a),l) -> > let prefix = Path.Combine(prefix,a) > let prefix' = prefix |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> $"SpiProj.schema.modules.loop | > RawFileHierarchy.Directory(r,(r',a),l) / prefix: {prefix} / prefix': {prefix'}") > _locals > let prefix = prefix' > Directory(r,(r',prefix),a,List.map (loop prefix) l) > | RawFileHierarchy.File(r,(r',a),is_top_down,is_include) -> > let path = Path.Combine(prefix,a + if is_top_down then > ".spi" else ".spir") > let path' = path |> SpiralFileSystem.standardize_path > // trace Verbose (fun () -> $"SpiProj.schema.modules.loop | > RawFileHierarchy.File(r,(r',a),is_top_down,is_include) / path: {path} / path': > {path'}") _locals > let path = path' > File(r,(r',path),if is_include then None else Some a) > List.map (loop (snd module_dir)) x.modules > let packages = > let cdir = > #if !INTERACTIVE > // > Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory,"..") > Path.Combine (SpiralFileSystem.get_workspace_root (), > "deps/The-Spiral-Language/VS Code Plugin") > #else > Path.Combine (SpiralFileSystem.get_workspace_root (), > "deps/The-Spiral-Language/VS Code Plugin") > #endif > |> Path.GetFullPath > x.packages |> List.map (fun x -> > let name = if x.is_include then None else Some x.name > let dir = Path.Combine((if x.is_in_compiler_dir then cdir else > snd package_dir),x.name) > let dir' = dir |> SpiralFileSystem.standardize_path > let dir'' = dir' |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> $"""SpiProj.schema.packages / dir: {dir > |> SpiralSm.replace "\\" "|"} / dir': {dir'} / dir'': {dir''}""") _locals > let dir = dir'' > {name = name; dir = x.range, dir} > ) > Result.Ok {moduleDir = module_dir; modules = modules; packageDir = > package_dir; packages = packages} > with :? SchemaException as e -> Result.Error [[e.Data0]] > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## Graph > > ── fsharp ────────────────────────────────────────────────────────────────────── > open System.Collections.Generic > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Graph > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Graph = Map<string,string Set> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### MirroredGraph > > ── fsharp ────────────────────────────────────────────────────────────────────── > type MirroredGraph = Graph * Graph > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### mirrored_graph_empty > > ── fsharp ────────────────────────────────────────────────────────────────────── > let mirrored_graph_empty : MirroredGraph = Map.empty, Map.empty > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### link_add' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let link_add' (abs : Graph) a b: Graph = > match Map.tryFind a abs with > | Some bs -> Map.add a (Set.add b bs) abs > | None -> Map.add a (Set.singleton b) abs > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### link_add > > ── fsharp ────────────────────────────────────────────────────────────────────── > let link_add (s : MirroredGraph) a b: MirroredGraph = link_add' (fst s) a b, > link_add' (snd s) b a > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### link_remove' > > ── fsharp ────────────────────────────────────────────────────────────────────── > let link_remove' (abs : Graph) a b = > match Map.tryFind a abs with > | Some bs -> > let bs = Set.remove b bs > if Set.isEmpty bs then Map.remove a abs else Map.add a bs abs > | None -> abs > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### link_remove > > ── fsharp ────────────────────────────────────────────────────────────────────── > let link_remove (s : MirroredGraph) a b: MirroredGraph = link_remove' (fst s) a > b, link_remove' (snd s) b a > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### links_remove > > ── fsharp ────────────────────────────────────────────────────────────────────── > let links_remove ((abs,bas as s) : MirroredGraph) a: MirroredGraph = > match Map.tryFind a abs with > | Some bs -> Map.remove a abs, Set.fold (fun bas b -> link_remove' bas b a) > bas bs > | None -> s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### links_add > > ── fsharp ────────────────────────────────────────────────────────────────────── > let links_add s a bs = List.fold (fun s b -> link_add s a b) s bs > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### links_replace > > ── fsharp ────────────────────────────────────────────────────────────────────── > let links_replace (s : MirroredGraph) a bs = links_add (links_remove s a) a bs > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### links_get > > ── fsharp ────────────────────────────────────────────────────────────────────── > let links_get (abs : Graph) a = Map.tryFind a abs |> Option.defaultValue > Set.empty > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### link_exists > > ── fsharp ────────────────────────────────────────────────────────────────────── > let link_exists ((abs,bas) : MirroredGraph) x = Map.containsKey x abs || > Map.containsKey x bas > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### topological_sort_template > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline topological_sort_template add bas dirty_nodes = > let sort_visited = HashSet() > let rec dfs_rev a = if sort_visited.Add(a) then Seq.iter dfs_rev (links_get > bas a); add a > Seq.iter dfs_rev dirty_nodes > sort_visited > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### topological_sort' > > ── fsharp ────────────────────────────────────────────────────────────────────── > // Returns the order end -> mid -> start. > let topological_sort' bas start_nodes = let sort_order = Queue() in sort_order, > topological_sort_template sort_order.Enqueue bas start_nodes > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### topological_sort > > ── fsharp ────────────────────────────────────────────────────────────────────── > // Returns the order start -> mid -> end. > let topological_sort bas start_nodes = let sort_order = Stack() in sort_order, > topological_sort_template sort_order.Push bas start_nodes > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### circular_nodes > > ── fsharp ────────────────────────────────────────────────────────────────────── > let circular_nodes ((abs,bas) : MirroredGraph) dirty_nodes = > let sort_order, sort_visited = topological_sort bas dirty_nodes > let order = sort_order.ToArray() > let visited = HashSet() > let circular_nodes = Dictionary() > Array.fold (fun i a -> > let sc = ResizeArray() // This array stores the strongly connected > components. > let rec dfs a = if sort_visited.Contains(a) && visited.Add(a) then > Seq.iter dfs (links_get abs a); sc.Add a > dfs a > if 1 < sc.Count then > sc |> Seq.iter (fun x -> circular_nodes.Add(x,i) |> ignore) > i+1 > else > i > ) 0 order |> ignore > order, circular_nodes > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## ServerUtils > > ── fsharp ────────────────────────────────────────────────────────────────────── > // open System > open System.IO > open System.Collections.Generic > > // open Common > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjectCodeAction > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ProjectCodeAction = > | CreateFile of {|filePath : string|} > | DeleteFile of {|range: VSCRange; filePath : string|} // The range here > includes the postfix operators. > | RenameFile of {|filePath : string; target : string|} > | CreateDirectory of {|dirPath : string|} > | DeleteDirectory of {|range: VSCRange; dirPath : string|} // The range here > is for the whole tree, not just the code action activation. > | RenameDirectory of {|dirPath : string; target : string; validate_as_file : > bool|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### code_action_execute > > ── fsharp ────────────────────────────────────────────────────────────────────── > let code_action_execute a = > try match a with > | CreateDirectory a -> Directory.CreateDirectory(a.dirPath) |> ignore; > Result.Ok null > | DeleteDirectory a -> Directory.Delete(a.dirPath,true); Result.Ok > a.dirPath > | RenameDirectory a -> > if a.validate_as_file then > match FParsec.CharParsers.run file_verify a.target with > | FParsec.CharParsers.ParserResult.Success _ -> > Directory.Move(a.dirPath,Path.Combine(a.dirPath,"..",a.target)); Result.Ok > a.dirPath > | FParsec.CharParsers.ParserResult.Failure(er,_,_) -> > Result.Error er > else > Directory.Move(a.dirPath,Path.Combine(a.dirPath,"..",a.target)); > Result.Ok a.dirPath > | CreateFile a -> > if File.Exists(a.filePath) then Result.Error "File already exists." > else > Directory.GetParent(a.filePath).Create() > File.Create(a.filePath).Dispose() > Result.Ok null > | DeleteFile a -> File.Delete(a.filePath); Result.Ok a.filePath > | RenameFile a -> > match FParsec.CharParsers.run file_verify a.target with > | FParsec.CharParsers.ParserResult.Success _ -> > File.Move(a.filePath,Path.Combine(a.filePath,"..",a.target+Path.GetExtension(a.f > ilePath)),false); Result.Ok a.filePath > | FParsec.CharParsers.ParserResult.Failure(er,_,_) -> Result.Error > er > with e -> Result.Error e.Message > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### RAction > > ── fsharp ────────────────────────────────────────────────────────────────────── > type RAction = VSCRange * ProjectCodeAction > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SchemaState > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SchemaState = { schema : Schema; errors_parse : RString list; > errors_modules : RString list; errors_packages : RString list} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SchemaEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SchemaEnv = Map<string,SchemaState> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ModuleEnv > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ModuleEnv = Map<string,ModuleState> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ss_empty > > ── fsharp ────────────────────────────────────────────────────────────────────── > let ss_empty = { > schema = {moduleDir = None, null; modules = [[]]; packageDir = None, null; > packages = [[]]} > errors_parse = [[]]; errors_modules = [[]]; errors_packages = [[]] > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ss_from_result > > ── fsharp ────────────────────────────────────────────────────────────────────── > let ss_from_result = function > | Result.Ok schema -> {ss_empty with schema = schema} > | Result.Error ers -> {ss_empty with errors_parse = ers} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ss_validate_module > > ── fsharp ────────────────────────────────────────────────────────────────────── > let ss_validate_module (packages : SchemaEnv) (modules : ModuleEnv) (x : > SchemaState) = > let errors = ResizeArray() > let rec loop = function > | FileHierarchy.Directory(_,(r,path),_,l) -> > trace Verbose (fun () -> $"ss_validate_module / dir path: {path}") > _locals > if Map.containsKey path packages then errors.Add(r,"Module directory > has a package file in it.") > list l > | FileHierarchy.File(_,(r,path),_) -> > let path' = path |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> $"ss_validate_module / file / path: {path} > / path': {path'}") _locals > if Map.containsKey path' modules = false then errors.Add(r,"Module > not loaded.") > and list l = List.iter loop l > list x.schema.modules > Seq.toList errors > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ss_validate_modules > > ── fsharp ────────────────────────────────────────────────────────────────────── > let ss_validate_modules (packages : SchemaEnv) modules order = > Array.fold (fun s x -> > match Map.tryFind x s with > | Some v -> Map.add x {v with errors_modules = ss_validate_module > packages modules v} s > | None -> s > ) packages order > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ss_has_error > > ── fsharp ────────────────────────────────────────────────────────────────────── > let ss_has_error x = > (List.isEmpty x.errors_parse && List.isEmpty x.errors_modules && > List.isEmpty x.errors_packages) = false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ss_validate_packages > > ── fsharp ────────────────────────────────────────────────────────────────────── > let ss_validate_packages (packages : SchemaEnv) (order : string [[]], socs : > Dictionary<string,int>) : SchemaEnv = > Array.fold (fun s path -> > match Map.tryFind path s with > | Some (x : SchemaState) -> > let c p = match socs.TryGetValue(p) with true,b -> b | false,_ -> -1 > let is_circular x = x <> -1 > let are_in_same_strong_component a b = is_circular a && is_circular > b && a = b > let ers = > let cpath = c path > (x.schema.packages, [[]]) ||> List.foldBack (fun {dir=r,p} ers > -> > let cp = c p > if are_in_same_strong_component cpath cp then (r,"Package is > circular and loops through the current one.") :: ers > elif path = p then (r,"Self referential links are not > allowed.") :: ers > else > match Map.tryFind p s with > | Some s' when ss_has_error s' -> (r,"Package has an > error.") :: ers > | Some _ -> ers > | None -> (r,"Package not loaded.") :: ers > ) > Map.add path {x with errors_packages=ers} s > | _ -> s > ) packages order > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ss_validate > > ── fsharp ────────────────────────────────────────────────────────────────────── > let ss_validate packages modules (order,socs) = > let packages = ss_validate_modules packages modules order > ss_validate_packages packages (order,socs) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ResultMap<'a,'b> > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ResultMap<'a,'b> when 'a : comparison = {ok : Map<'a,'b>; error: > Map<'a,'b>} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ProjEnvTCResult > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ProjEnvTCResult = ResultMap<PackageId,ProjStateTC> > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_projenvr_sync_schema > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_projenvr_sync_schema default_env funs_packages funs_files (ids : > Map<string, PackageId>) (packages : SchemaEnv) > (state : ResultMap<PackageId,ProjState<'file_input,'file,'package>>) > order = > Array.fold (fun (s : ResultMap<_,_>) x -> > let x' = x |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> $"ServerUtils.wdiff_projenvr_sync_schema / x: > {x} / x': {x'}") _locals > match Map.tryFind x' ids with > | Some pid -> > match Map.tryFind x' packages with > | Some schema -> > match Map.tryFind pid s.ok, Map.tryFind pid s.error, > ss_has_error schema with > | Some _, Some _,_ -> failwith "Compiler error: The ok and error > maps should be disjoint." > | Some x, None, true -> {ok=Map.remove pid s.ok; error=Map.add > pid x s.error} > | None, Some x, false -> {ok=Map.add pid x s.ok; > error=Map.remove pid s.error} > | None, None, c -> > let x = wdiff_proj_init default_env funs_packages funs_files > pid > if c then {s with error=Map.add pid x s.error} else {s with > ok=Map.add pid x s.ok} > | _ -> s > | None -> {ok=Map.remove pid s.ok; error=Map.remove pid s.error} > | None -> s > ) state order > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### projenv_update_packages > > ── fsharp ────────────────────────────────────────────────────────────────────── > let projenv_update_packages default_env funs_packages funs_files (ids : > Map<string, PackageId>) (packages : SchemaEnv) > (state : Map<PackageId,ProjState<'a,'b,'state>>) (dirty_packages : > Dictionary<_,_>, order : string [[]]) = > Array.foldBack (fun x l -> > let x' = x |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> $"ServerUtils.projenv_update_packages / x: {x} > / x': {x'}") _locals > match Map.tryFind x' packages with > | None -> l > | Some schema when ss_has_error schema -> l > | Some schema -> > let pid = ids.[[x']] > let packages = schema.schema.packages |> List.map (fun x -> x.name, > ids.[[snd x.dir]]) > match dirty_packages.TryGetValue(x') with > | true, x -> UpdatePackageModule(pid,packages,x) :: l > | false, _ -> UpdatePackage(pid,packages) :: l > ) order [[]] > |> wdiff_projenv default_env funs_packages funs_files state > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### proj_file_iter_file > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline proj_file_iter_file f (files : ProjFiles) = > let rec loop = function > | ProjFilesTree.File(module_id,path,_) -> f module_id path > | ProjFilesTree.Directory(_,_,l) -> list l > and list l = List.iter loop l > list files.tree > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### proj_file_get_input > > ── fsharp ────────────────────────────────────────────────────────────────────── > let proj_file_get_input uids_file (x : ProjFiles) = > let d = Dictionary(Array.length uids_file) > proj_file_iter_file (fun mid path -> d.Add(path, Array.get uids_file mid |> > fst)) x > d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### proj_file_from_schema > > ── fsharp ────────────────────────────────────────────────────────────────────── > let proj_file_from_schema (x : Schema) : ProjFiles = > let mutable num_files = 0 > let mutable num_dirs = 0 > let rec loop = function > | FileHierarchy.File(_,(_,path),name) -> > let uid = num_files > num_files <- num_files + 1 > let path' = path |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> $"ServerUtils.proj_file_from_schema / path: > {path} / path': {path'}") _locals > ProjFilesTree.File(uid,path',name) > | FileHierarchy.Directory(_,_,name,l) -> > let uid = num_dirs > num_dirs <- num_dirs + 1 > ProjFilesTree.Directory(uid,name,list l) > and list l = List.map loop l > let tree = list x.modules > { tree = tree; num_files = num_files; num_dirs = num_dirs } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### proj_file_make_input > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline proj_file_make_input f (files : ProjFiles) = > let ar = Array.zeroCreate files.num_files > proj_file_iter_file (fun mid path -> ar.[[mid]] <- f mid path) files > ar > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### dirty_nodes_template > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline dirty_nodes_template funs (ids : Map<string, PackageId>) (packages : > SchemaEnv) modules > (state : Map<PackageId,_>) (dirty_packages : string HashSet) = > let d = Dictionary<string,_ [[]] * ProjFiles>() > dirty_packages |> Seq.iter (fun path -> > let path' = path |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> $"ServerUtils.dirty_nodes_template / path: > {path} / path': {path'}") _locals > match Map.tryFind path' ids with > | Some pid -> > match Map.tryFind pid state with > | Some x -> > let modules = modules pid > let files = proj_file_from_schema packages.[[path']].schema > let state = > let state = proj_file_get_input x.files.uids_file > x.files.files > proj_file_make_input (fun mid path -> > trace Verbose (fun () -> > $"ServerUtils.dirty_nodes_template / proj_file_make_input / path: {path} / > path': {path'}") _locals > match state.TryGetValue(path) with > | true, x -> wdiff_file_update_input funs x (modules mid > path) > | false, _ -> funs.init (modules mid path) > ) files > d.Add(path',(state,files)) > | None -> () > | None -> () > ) > d > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### dirty_nodes_tc > > ── fsharp ────────────────────────────────────────────────────────────────────── > let dirty_nodes_tc (ids : Map<string, PackageId>) (packages : SchemaEnv) > (modules : ModuleEnv) > (state : Map<PackageId,ProjStateTC>) (dirty_packages : string HashSet) = > dirty_nodes_template funs_file_tc ids packages (fun pid mid path -> pid, > mid, modules.[[path]].bundler) state dirty_packages > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### dirty_nodes_prepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let dirty_nodes_prepass (ids : Map<string, PackageId>) (packages : SchemaEnv) > (modules : Map<PackageId,ProjStateTC>) > (state : Map<PackageId,ProjStatePrepass>) (dirty_packages : string > HashSet) = > let modules pid = > let x = modules.[[pid]] > let state = proj_file_get_input x.files.uids_file x.files.files > fun (mid : ModuleId) path -> pid, mid, path, state.[[path]].result > dirty_nodes_template funs_file_prepass ids packages modules state > dirty_packages > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_projenvr > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_projenvr default_env dirty_nodes funs_proj_package funs_proj_file > ids packages modules (state : ResultMap<PackageId,_>) (dirty_packages, > order) = > let state = wdiff_projenvr_sync_schema default_env funs_proj_package > funs_proj_file ids packages state order > let dirty_packages = dirty_nodes ids packages modules state.ok > dirty_packages > {state with ok=projenv_update_packages default_env funs_proj_package > funs_proj_file ids packages state.ok (dirty_packages, order)} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_projenvr_tc > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_projenvr_tc default_env ids packages modules state (dirty_packages, > order) = > wdiff_projenvr default_env dirty_nodes_tc funs_proj_package_tc > funs_proj_file_tc > ids packages modules state (dirty_packages, order) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### wdiff_projenvr_prepass > > ── fsharp ────────────────────────────────────────────────────────────────────── > let wdiff_projenvr_prepass default_env ids packages modules state > (dirty_packages, order) = > wdiff_projenvr default_env dirty_nodes_prepass funs_proj_package_prepass > funs_proj_file_prepass > ids packages modules state (dirty_packages, order) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### LoadResult > > ── fsharp ────────────────────────────────────────────────────────────────────── > type LoadResult = > | LoadModule of path: string * ModuleState option > | LoadPackage of package_dir: string * SchemaState option > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_top_down > > ── fsharp ────────────────────────────────────────────────────────────────────── > open System.Threading.Tasks > > ── fsharp ────────────────────────────────────────────────────────────────────── > let is_top_down (x : string) = Path.GetExtension x = ".spi" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### spiproj_suffix > > ── fsharp ────────────────────────────────────────────────────────────────────── > let spiproj_suffix x = Path.Combine(x,"package.spiproj") > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### loader_package > > ── fsharp ────────────────────────────────────────────────────────────────────── > let loader_package default_env (packages : SchemaEnv) (modules : ModuleEnv) > (pdir, text) = > let pdir' = pdir |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> $"ServerUtils.loader_package / pdir: {pdir} / > pdir': {pdir'}") _locals > let pdir = pdir' > let queue = Queue() > let load_module modules path = > match Map.tryFind path modules with > | Some _ -> () > | None -> > task { > if File.Exists path then > try let! x = File.ReadAllTextAsync(path) > return LoadModule(path,wdiff_module_init_all default_env > (is_top_down path) x |> Some) > with _ -> return LoadModule(path,None) > else return LoadModule(path,None) // Note: We need this case > otherwise 'con' might cause the file read to deadlock. > https://superuser.com/questions/86999/why-cant-i-name-a-folder-or-file-con-in-wi > ndows > } |> queue.Enqueue > > let schema (pdir,text) = schema (pdir,text) |> fun x -> > LoadPackage(pdir,Some (ss_from_result x)) > let load_package_from_disk packages pdir = > trace Verbose (fun () -> > $"ServerUtils.loader_package.load_package_from_disk / pdir: {pdir}") _locals > task { > if Directory.Exists pdir then > try > let! x = File.ReadAllTextAsync(spiproj_suffix pdir) > return schema (pdir,x) > with _ -> > return LoadPackage(pdir,None) > else return LoadPackage(pdir,None) // Ditto. > } |> queue.Enqueue > let load_package_some (pdir,text) = > trace Verbose (fun () -> $"ServerUtils.loader_package.load_package_some > / pdir: {pdir}") _locals > schema (pdir,text) |> Task.FromResult |> queue.Enqueue > let load_package_none packages pdir = > let pdir' = pdir |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> $"ServerUtils.loader_package.load_package_none > / pdir: {pdir} / pdir': {pdir'}") _locals > let pdir = pdir' > match Map.tryFind pdir packages with > | Some _ -> () > | None -> load_package_from_disk packages pdir > > let dirty_packages = HashSet() > let rec invalidate_parent packages (x : DirectoryInfo) = > if x <> null then > let x' = x.FullName |> SpiralFileSystem.standardize_path > // trace Verbose (fun () -> > $"""ServerUtils.loader_package.invalidate_parent / x.FullName: {x.FullName |> > SpiralSm.replace "\\" "|"} / x': {x'} / packages: %A{packages |> Map.keys} / > pdir: {pdir}""") _locals > let x_ = x > let x = {| FullName = x' |} > if Map.containsKey x.FullName packages then > dirty_packages.Add(x.FullName) |> ignore > else invalidate_parent packages x_.Parent > > let mutable packages = packages > let mutable modules = modules > > match text with > | Some text -> load_package_some (pdir,text) > | None -> > // trace Verbose (fun () -> $"ServerUtils.loader_package / pdir: > {pdir}") _locals > match Map.tryFind pdir packages with > | Some x -> LoadPackage(pdir,Some x) |> Task.FromResult |> queue.Enqueue > | None -> load_package_from_disk packages pdir > > while 0 < queue.Count do > match queue.Dequeue().Result with > | LoadPackage(pdir,Some x) -> > let pdir' = pdir |> SpiralFileSystem.standardize_path > // trace Verbose (fun () -> $"ServerUtils.loader_package.LoadPackage > / pdir: {pdir} / pdir': {pdir'}") _locals > packages <- Map.add pdir' x packages; dirty_packages.Add(pdir') |> > ignore; invalidate_parent packages (Directory.GetParent(pdir')) > x.schema.packages |> List.iter (fun x -> load_package_none packages > (snd x.dir)) > let rec loop = function > | FileHierarchy.Directory(_,_,_,l) -> list l > | FileHierarchy.File(_,(_,path),_) -> > let path' = path |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> > $"ServerUtils.loader_package.LoadPackage | FileHierarchy.File(_,(_,path),_) / > path: {path} / path': {path'}") _locals > load_module modules path' > and list l = List.iter loop l > list x.schema.modules > | LoadPackage(pdir,None) -> packages <- Map.remove pdir packages; > dirty_packages.Add(pdir) |> ignore; invalidate_parent packages > (Directory.GetParent(pdir)) > | LoadModule(mdir,Some x) -> > let mdir' = mdir |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> $"ServerUtils.loader_package.LoadModule / > mdir: {mdir} / mdir': {mdir'}") _locals > modules <- Map.add mdir' x modules > | LoadModule(mdir,None) -> modules <- Map.remove mdir modules > packages, dirty_packages, modules > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### graph_update > > ── fsharp ────────────────────────────────────────────────────────────────────── > let graph_update (packages : SchemaEnv) (g : MirroredGraph) (dirty_packages : > string HashSet) = > Seq.fold (fun g x -> > match Map.tryFind x packages with > | Some v -> links_replace g x (v.schema.packages |> List.map (fun x -> > snd x.dir)) > | None -> links_remove g x > ) g dirty_packages > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### package_ids_update > > ── fsharp ────────────────────────────────────────────────────────────────────── > let package_ids_update (packages : SchemaEnv) package_ids (dirty_packages : > string HashSet) = > let adds,removals = dirty_packages |> Seq.toArray |> Array.partition (fun x > -> Map.containsKey x packages) > let adds = adds |> Array.filter (fun x -> Map.containsKey x (fst > package_ids) = false) |> Array.mapi (fun i x -> (i,x)) > let package_ids, removed_pids = removals |> Array.fold (fun ((a,b),l as s) x > -> match Map.tryFind x a with Some x' -> (Map.remove x a, Map.remove x' b), x' > :: l | None -> s) (package_ids,[[]]) > removed_pids, > if Array.isEmpty adds then package_ids else > Map.fold (fun s x _ -> > Array.mapFold (fun s x -> if s = fst x then (s+1, snd x),s+1 else x,s) x > s |> fst > ) adds (snd package_ids) > |> Array.fold (fun (a,b) (k,v) -> Map.add v k a, Map.add k v b) package_ids > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### package_ids_remove > > ── fsharp ────────────────────────────────────────────────────────────────────── > let package_ids_remove (s : ResultMap<PackageId,_>) l = > List.fold (fun s x -> {ok=Map.remove x s.ok; error=Map.remove x s.error}) s > l > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## SignalRSupervisor > > ── fsharp ────────────────────────────────────────────────────────────────────── > // #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.ref/7.0.11/ref/n > et7.0/Microsoft.AspNetCore.SignalR.Core.dll" > // #r > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > // #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com > mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll" > // #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli > ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll" > // #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0 > /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll" > // #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0 > /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll" > // #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/ > 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll" > // #r > @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha > rp.Json.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > // open System > open System.IO > open System.Collections.Generic > > open Hopac > open Hopac.Infixes > open Hopac.Extensions > open Hopac.Stream > > // open Common > open SpiralFileSystem.Operators > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### LocalizedErrors > > ── fsharp ────────────────────────────────────────────────────────────────────── > type LocalizedErrors = {|uri : string; errors : RString list|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TracedError > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TracedError = {|trace : string list; message : string|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SupervisorErrorSources > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SupervisorErrorSources = { > fatal : string Ch > tokenizer : LocalizedErrors Ch > parser : LocalizedErrors Ch > typer : LocalizedErrors Ch > package : LocalizedErrors Ch > traced : TracedError Ch > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SupervisorReq > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SupervisorReq = > | ProjectFileOpen of {|uri : string; spiprojText : string|} > | ProjectFileChange of {|uri : string; spiprojText : string|} > | ProjectFileLinks of {|uri : string|} * RString list IVar > | ProjectCodeActions of {|uri : string|} * RAction list IVar > | ProjectCodeActionExecute of {|uri : string; action : ProjectCodeAction|} * > {|result : string option|} IVar > | FileOpen of {|uri : string; spiText : string|} > | FileChange of {|uri : string; spiEdit : SpiEdit|} > | FileDelete of {|uris : string [[]]|} > | FileTokenRange of {|uri : string; range : VSCRange|} * int [[]] IVar > | HoverAt of {|uri : string; pos : VSCPos|} * string option IVar > | BuildFile of {|uri : string; backend : string|} * string option IVar > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SupervisorState > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SupervisorState = { > packages : SchemaEnv > modules : ModuleEnv > packages_infer : ResultMap<PackageId,ProjStateTC> > packages_prepass : ResultMap<PackageId,ProjStatePrepass> > graph : MirroredGraph > package_ids : Map<string,int> * Map<int,string> > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### proj_validate > > ── fsharp ────────────────────────────────────────────────────────────────────── > let proj_validate default_env s dirty_packages = > let order,socs = circular_nodes s.graph dirty_packages > let packages = ss_validate s.packages s.modules (order,socs) > let packages_infer = wdiff_projenvr_tc default_env (fst s.package_ids) > packages s.modules s.packages_infer (dirty_packages, order) > order, {s with packages_infer = packages_infer; packages=packages} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### proj_graph_update > > ── fsharp ────────────────────────────────────────────────────────────────────── > let proj_graph_update default_env s dirty_packages = > let removed_pids,package_ids = package_ids_update s.packages s.package_ids > dirty_packages > let packages_infer, packages_prepass = package_ids_remove s.packages_infer > removed_pids, package_ids_remove s.packages_prepass removed_pids > let graph = graph_update s.packages s.graph dirty_packages > proj_validate default_env {s with graph = graph; package_ids = package_ids; > packages_infer = packages_infer; packages_prepass = packages_prepass} > dirty_packages > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### proj_open > > ── fsharp ────────────────────────────────────────────────────────────────────── > let proj_open default_env s (dir, text) = > let packages,dirty_packages,modules = loader_package default_env s.packages > s.modules (dir,text) > proj_graph_update default_env {s with packages = packages; modules = > modules} dirty_packages > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### proj_revalidate_owner > > ── fsharp ────────────────────────────────────────────────────────────────────── > let proj_revalidate_owner default_env s file = > let rec loop (x : DirectoryInfo) = > if x = null then [[||]], s > else > let x' = x.FullName |> SpiralFileSystem.standardize_path > // trace Verbose (fun () -> $"""Supervisor.proj_revalidate_owner / > x.FullName: {x.FullName |> SpiralSm.replace "\\" "|"} / x': {x'}""") _locals > let x_ = x > let x = {| FullName = x' |} > if Map.containsKey x.FullName s.packages then proj_validate > default_env s (HashSet [[x.FullName]]) > elif File.Exists(spiproj_suffix x.FullName) then proj_open > default_env s (x.FullName,None) > else loop x_.Parent > loop (Directory.GetParent(file)) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### file_delete > > ── fsharp ────────────────────────────────────────────────────────────────────── > let file_delete default_env s (files : string [[]]) = > let deleted_modules = HashSet() > let deleted_packages = HashSet() > files |> Array.iter (fun k -> > s.packages |> Map.iter (fun k' _ -> if (spiproj_suffix k').StartsWith(k) > then deleted_packages.Add(k') |> ignore) > s.modules |> Map.iter (fun k' _ -> if k'.StartsWith(k) then > deleted_modules.Add(k') |> ignore) > ) > let modules = Seq.foldBack Map.remove deleted_modules s.modules > let packages = Seq.foldBack Map.remove deleted_packages s.packages > let dirty_packages = HashSet(deleted_packages) > let revalidate_parent (x : string) = > trace Verbose (fun () -> $"Supervisor.file_delete.revalidate_parent.loop > / x.FullName: {x}") _locals > let rec loop (x : DirectoryInfo) = > if x <> null then > let x' = x.FullName |> SpiralFileSystem.standardize_path > let x = DirectoryInfo x' > if Map.containsKey x.FullName s.packages then > dirty_packages.Add(x.FullName) |> ignore > else loop x.Parent > loop(Directory.GetParent x) > Seq.iter revalidate_parent deleted_modules; Seq.iter revalidate_parent > deleted_packages > Seq.toArray deleted_modules, proj_graph_update default_env {s with modules = > modules; packages = packages} dirty_packages > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### AttentionState > > ── fsharp ────────────────────────────────────────────────────────────────────── > type AttentionState = { > modules : string Set * string list > packages : string Set * string list > old_packages : SchemaEnv > supervisor : SupervisorState > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### attention_server > > ── fsharp ────────────────────────────────────────────────────────────────────── > let attention_server (errors : SupervisorErrorSources) (req : _ Ch) = > let push path (s,o) = Set.add path s, path :: o > let add (s,o) l = Array.foldBack (fun x (s,o as z) -> if Set.contains x s > then z else Set.add x s, x :: o) l (s,o) > let update (s : AttentionState) (modules,packages,supervisor) = {modules = > add s.modules modules; packages = add s.packages packages; supervisor = > supervisor; old_packages = s.supervisor.packages} > let rec loop (s : AttentionState) = > let clear uri = > Hopac.start (Ch.send errors.tokenizer {|uri=uri; errors=[[]]|}) > Hopac.start (Ch.send errors.parser {|uri=uri; errors=[[]]|}) > Hopac.start (Ch.send errors.typer {|uri=uri; errors=[[]]|}) > let send_tokenizer uri x = Hopac.start (Ch.send errors.tokenizer > {|uri=uri; errors=x|}) > let clear_parse uri = Hopac.start (Ch.send errors.parser {|uri=uri; > errors=[[]]|}) > let clear_typer uri = Hopac.start (Ch.send errors.typer {|uri=uri; > errors=[[]]|}) > let clear_old_package x = Map.tryFind x s.old_packages |> Option.iter > (fun x -> > let rec loop = function > | FileHierarchy.File(_,(_,pdir),_) -> clear (file_uri pdir) > | FileHierarchy.Directory(_,_,_,l) -> list l > and list l = List.iter loop l > list x.schema.modules > ) > > let inline body uri interrupt ers ers' src next = > Ch.Try.take req >>= function > | Some x -> interrupt x > | None -> > if List.isEmpty ers then next ers' > else > let ers = List.append ers ers' > Hopac.start (Ch.send src {|uri=uri; errors=ers|}) > next ers > > let loop_module (s : AttentionState) mpath (m : ModuleState) = > let mpath' = mpath |> SpiralFileSystem.standardize_path > let uri = file_uri mpath > trace Verbose (fun () -> > $"Supervisor.attention_server.loop.loop_module / mpath: {mpath} / mpath': > {mpath'} / uri: {uri}") _locals > let mpath = mpath' > > > > let interrupt x = loop (update {s with modules=push mpath s.modules} > x) > let rec bundler (r : BlockBundleState) ers' = r >>= function > | Cons((_,x),rs) -> body uri interrupt x.errors ers' > errors.parser (bundler rs) > | Nil -> loop s > send_tokenizer uri m.tokenizer.errors > clear_parse uri > clear_typer uri > bundler m.bundler [[]] > > let rec loop_package (s : AttentionState) pdir = function > | (mpath,l) :: ls -> > let mpath' = mpath |> SpiralFileSystem.standardize_path > let uri = file_uri mpath > let pdir' = pdir |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> > $"Supervisor.attention_server.loop.loop_package / mpath: {mpath} / mpath': > {mpath'} / uri: {uri} / pdir: {pdir} / pdir': {pdir'}") _locals > let interrupt x = loop (update {s with packages=push pdir > s.packages} x) > let rec typer (r : TypecheckerStateValue Stream) ers' = r >>= > function > | Cons((_,x,_),rs) -> body uri interrupt x.errors ers' > errors.typer (typer rs) > | Nil -> loop_package s pdir' ls > let rec bundler (r : BlockBundleState) ers' = r >>= function > | Cons((_,x),rs) -> body uri interrupt x.errors ers' > errors.parser (bundler rs) > | Nil -> clear_typer uri; typer l [[]] > let m = s.supervisor.modules.[[mpath']] > send_tokenizer uri m.tokenizer.errors > clear_parse uri > bundler m.bundler [[]] > | [[]] -> loop s > > let package s = > match s.packages with > | se,x :: xs -> > let x' = x |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> > $"Supervisor.attention_server.loop.package / x: {x} / x': {x'}") _locals > let x = x' > let s = {s with packages=Set.remove x se,xs} > let package_errors = > match Map.tryFind x s.supervisor.packages with > | Some v -> List.concat [[v.errors_parse; v.errors_modules; > v.errors_packages]] > | None -> [[]] > Hopac.start (Ch.send errors.package > ({|uri=file_uri(spiproj_suffix x); errors=package_errors|})) > clear_old_package x > match Map.tryFind x (fst s.supervisor.package_ids) with > | Some uid -> > match Map.tryFind uid s.supervisor.packages_infer.ok with > | Some v -> > let path_tcvals = > let uids_file = v.files.uids_file > let rec loop x s = > match x with > | ProjFilesTree.File(mid,path,_) -> > let path' = path |> > SpiralFileSystem.standardize_path > trace Verbose (fun () -> > $"Supervisor.attention_server.loop | WDiff.File(mid,path,_) / path: {path} / > path': {path'}") _locals > (path', (fst uids_file.[[mid]]).result) :: s > | ProjFilesTree.Directory(_,_,l) -> list l s > and list l s = List.foldBack loop l s > list v.files.files.tree [[]] > loop_package s x path_tcvals > | None -> loop s > | None -> loop s > | _, [[]] -> req >>= (update s >> loop) > > match s.modules with > | se,x :: xs -> > let s = {s with modules=Set.remove x se,xs} > match Map.tryFind x s.supervisor.modules with > | Some v -> loop_module s x v > | None -> clear (file_uri x); package s > | _,[[]] -> package s > > (req >>= fun (modules,packages,supervisor) -> > loop {modules = Set.ofArray modules, Array.toList modules; packages = > Set.ofArray packages, Array.toList packages; supervisor = supervisor; > old_packages = Map.empty} > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_position > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_position (s : SupervisorState) (x : Range) = > let line = (fst x.range).line > let col = (fst x.range).character > let er_code = s.modules.[[x.path]].tokenizer.lines_text.[[line]] > System.Text.StringBuilder() > .AppendLine(sprintf "Error trace on line: %i, column: %i in module: %s." > (line+1) (col+1) x.path) > .AppendLine(er_code) > .Append(' ',col) > .AppendLine("^") > .ToString() > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### show_trace > > ── fsharp ────────────────────────────────────────────────────────────────────── > let show_trace s (x : Trace) (msg : string) = > let rec loop (l : Trace) = function > | (x : Range) :: xs -> > match l with > | x' :: _ when x.path = x'.path && fst x.range = fst x'.range -> > loop l xs > | _ -> loop (x :: l) xs > | _ -> l > List.map (show_position s) (loop [[]] x), msg > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### BuildResult > > ── fsharp ────────────────────────────────────────────────────────────────────── > type BuildResult = > | BuildOk of {|code: string; file_extension : string|} list > | BuildErrorTrace of string list * string > | BuildFatalError of string > | BuildSkip > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### workspaceRoot > > ── fsharp ────────────────────────────────────────────────────────────────────── > let workspaceRoot = SpiralFileSystem.get_workspace_root () > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### targetDir > > ── fsharp ────────────────────────────────────────────────────────────────────── > let targetDir = workspaceRoot </> "target/spiral_Eval" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### traceDir > > ── fsharp ────────────────────────────────────────────────────────────────────── > let traceDir = targetDir </> "supervisor_trace" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### dir > > ── fsharp ────────────────────────────────────────────────────────────────────── > let dir uri = > let result = > System.IO.FileInfo(System.Uri(uri).LocalPath).Directory.FullName > let result' = result |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> $"Supervisor.dir / uri: {uri} / result: {result} / > result': {result'}") _locals > result' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### file > > ── fsharp ────────────────────────────────────────────────────────────────────── > let file uri = > let result = > try > System.IO.FileInfo(System.Uri(uri).LocalPath).FullName > with ex -> > trace Verbose (fun () -> $"Supervisor.file / uri: {uri} / ex: > %A{ex}") _locals > uri > let result' = result |> SpiralFileSystem.standardize_path > // let result = result |> SpiralSm.replace "\\" "|" > // trace Verbose (fun () -> $"Supervisor.file / uri: {uri} / result: > {result} / result': {result'}") _locals > result' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### supervisor_server > > ── fsharp ────────────────────────────────────────────────────────────────────── > let supervisor_server (default_env : DefaultEnv) atten (errors : > SupervisorErrorSources) req = > let fatal x = Hopac.start (Ch.send errors.fatal x) > let handle_packages (dirty_packages,s) = Hopac.start (Ch.send atten > ([[||]],dirty_packages,s)); s > let handle_file_packages file (dirty_packages,s) = Hopac.start (Ch.send > atten ([[|file|]],dirty_packages,s)); s > let handle_files_packages (dirty_files,(dirty_packages,s)) = Hopac.start > (Ch.send atten (dirty_files,dirty_packages,s)); s > let loop (s : SupervisorState) = req >>- function > | ProjectFileChange x | ProjectFileOpen x -> proj_open default_env s > (dir x.uri,Some x.spiprojText) |> handle_packages > | FileOpen x -> > let file = file x.uri > // trace Verbose (fun () -> > $"Supervisor.supervisor_server.loop.FileOpen / x: %A{x} / file: {file}") _locals > match Map.tryFind file s.modules with > | Some m -> wdiff_module_all default_env m x.spiText > | None -> wdiff_module_init_all default_env (is_top_down file) > x.spiText > |> fun v -> proj_revalidate_owner default_env {s with modules = > Map.add file v s.modules} file > |> handle_file_packages file > | FileChange x -> > let file = file x.uri > trace Verbose (fun () -> > $"Supervisor.supervisor_server.loop.FileChange / x: %A{x} / file: {file}") > _locals > match Map.tryFind file s.modules with > | None -> fatal "It is not possible to apply a change to a file that > is not present in the environment. Try reopening it in the editor."; s > | Some m -> > match wdiff_module_edit default_env m x.spiEdit with > | Result.Ok v -> proj_revalidate_owner default_env {s with > modules = Map.add file v s.modules} file |> handle_file_packages file > | Result.Error er -> fatal er; s > | FileDelete x -> > trace Verbose (fun () -> > $"Supervisor.supervisor_server.loop.FileDelete / x: {x}") _locals > file_delete default_env s (Array.map file x.uris) |> > handle_files_packages > | ProjectFileLinks(x,res) -> > let l = > match Map.tryFind (dir x.uri) s.packages with > | None -> [[]] > | Some x -> > let mutable l = [[]] > x.schema.packages |> List.iter (fun x -> > let r,dir = x.dir > trace Verbose (fun () -> > $"Supervisor.supervisor_server.ProjectFileLinks / x.schema.packages |> List.iter > / dir: {dir}") _locals > if Map.containsKey dir s.packages then l <- (r,file_uri > (spiproj_suffix dir)) :: l > ) > let rec loop = function > | FileHierarchy.Directory(_,_,_,l) -> list l > | FileHierarchy.File(_,(r,path),_) -> > trace Verbose (fun () -> > $"Supervisor.supervisor_server.ProjectFileLinks.loop | > SpiProj.FileHierarchy.File(_,(r,path),_) / path: {path}") _locals > if Map.containsKey path s.modules then l <- > (r,file_uri path) :: l > and list l = List.iter loop l > list x.schema.modules > l > Hopac.start (IVar.fill res l) > s > | ProjectCodeActions(x,res) -> > let z = > match Map.tryFind (dir x.uri) s.packages with > | None -> [[]] > | Some x -> > let mutable z = [[]] > let actions_dir (r,path) = > match r with > | None -> () > | Some r -> > if Directory.Exists(path) then > z <- (r,RenameDirectory {|dirPath=path; > target=null; validate_as_file=false|}) :: (r,DeleteDirectory {|dirPath=path; > range=r|}) :: z > else > z <- (r,CreateDirectory {|dirPath=path|}) :: z > actions_dir x.schema.moduleDir > actions_dir x.schema.packageDir > > let rec actions_module = function > | FileHierarchy.Directory(r',(r,path),_,l) -> > trace Verbose (fun () -> > $"Supervisor.supervisor_server.ProjectCodeActions.actions_module | > SpiProj.FileHierarchy.Directory(r',(r,path),_,l) / path: {path}") _locals > if Directory.Exists(path) then > z <- (r,RenameDirectory {|dirPath=path; > target=null; validate_as_file=true|}) :: (r,DeleteDirectory {|dirPath=path; > range=r'|}) :: z > else > z <- (r,CreateDirectory {|dirPath=path|}) :: z > actions_modules l > | FileHierarchy.File(r',(r,path),_) -> > trace Verbose (fun () -> > $"Supervisor.supervisor_server.ProjectCodeActions.actions_module | > SpiProj.FileHierarchy.File(r',(r,path),_) / path: {path}") _locals > if Map.containsKey path s.modules then > z <- (r,RenameFile {|filePath=path; > target=null|}) :: (r,DeleteFile {|range=r'; filePath=path|}) :: z > else > z <- (r,CreateFile {|filePath=path|}) :: z > and actions_modules l = List.iter actions_module l > actions_modules x.schema.modules > z > Hopac.start (IVar.fill res z) > s > | ProjectCodeActionExecute(x,res) -> > let error, s = > match code_action_execute x.action with > | Result.Error x -> Some x, s > | Result.Ok null -> None, proj_open default_env s (dir > x.uri,None) |> handle_packages > | Result.Ok path -> None, file_delete default_env s [[|path|]] > |> handle_files_packages > Hopac.start (IVar.fill res {|result=error|}) > s > | FileTokenRange(x, res) -> > let v = > match Map.tryFind (file x.uri) s.modules with > | Some v -> Some v > | None when x.uri |> SpiralSm.ends_with ".dib" -> > x.uri > |> SpiralSm.replace "file:///" "" > |> File.ReadAllText > |> wdiff_module_init_all default_env (is_top_down x.uri) > |> Some > | None -> None > > match v with > | Some v -> > Hopac.start (semantic_tokens v.parser >>= (vscode_tokens x.range > >> IVar.fill res)) > | None -> > if x.uri |> SpiralSm.starts_with "vscode-notebook-cell" |> not > then > trace Debug > (fun () -> > $"Supervisor.supervisor_server.FileTokenRange") > (fun () -> $"module=None / x.uri: {x.uri} / {_locals > ()}") > > Hopac.start (IVar.fill res [[||]]) > s > | HoverAt(x,res) -> > let file = file x.uri > let pos = x.pos > let _locals () = $"x: %A{x} / file: {file} / res: %A{res}" > trace Verbose (fun () -> $"Supervisor.supervisor_server.HoverAt") > _locals > let go_hover x = > match x with > | None -> None > | Some (x : InferResult) -> > x.hovers |> Array.tryPick (fun ((a,b),r) -> > if pos.line = a.line && (a.character <= pos.character && > pos.character < b.character) then Some r else None > ) > |> (fun x -> > let _locals () = $"x: %A{x}" > trace Verbose (fun () -> > $"Supervisor.supervisor_server.HoverAt.go_hover") _locals > x > ) > |> IVar.fill res > let go_block (x : TypecheckerState) = > let rec loop s (x : TypecheckerStateValue Stream) = > x >>= function > | Nil -> go_hover s > | Cons((_,x,_),b) -> > let _locals () = $"b: {b}" > trace Verbose (fun () -> > $"Supervisor.supervisor_server.HoverAt.go_block.loop Cons") _locals > if x.offset <= pos.line then loop (Some x) b > // If the block is over the offset that means the > previous one must be the right choice. > else go_hover s > Hopac.start (loop None x.result) > let rec go_file uids_file trees = > let rec loop = function > | ProjFilesTree.File(uid,file',_) -> if file = file' then > go_block (Array.get uids_file uid |> fst); true else false > | ProjFilesTree.Directory(_,_,l) -> list l > and list l = List.exists loop l > list trees > let rec go_parent (x : DirectoryInfo) = > trace Verbose (fun () -> > $"Supervisor.supervisor_server.HoverAt.go_parent / x: %A{x}") _locals > if x = null then false > else > let path = x.FullName |> SpiralFileSystem.standardize_path > if Map.containsKey path s.packages then > let pid = (fst s.package_ids).[[path]] > match Map.tryFind pid s.packages_infer.ok with > | None -> false > | Some x -> go_file x.files.uids_file x.files.files.tree > else > go_parent x.Parent > if go_parent (Directory.GetParent(file)) = false then Hopac.start > (IVar.fill res None) > s > | BuildFile (x, res) -> > let backend = x.backend > let file = file x.uri > let _locals () = $"x: %A{x} / file: {file}" > trace Verbose (fun () -> $"Supervisor.supervisor_server.BuildFile") > _locals > let handle_build_result = function > | BuildOk l -> > Job.fromAsync (async { > for x in l do > do! > System.IO.File.WriteAllTextAsync(System.IO.Path.ChangeExtension(file,x.file_exte > nsion), x.code) |> Async.AwaitTask > }) > |> Hopac.start > l > |> List.map (fun x -> x.code) > |> String.concat "\n" > |> Some > |> IVar.fill res > | BuildFatalError x as x' -> > trace Info (fun () -> > $"Supervisor.supervisor_server.BuildFile.handle_build_result / BuildFatalError > x: %A{x}") _locals > Hopac.start (Ch.send errors.fatal x) > IVar.fill res None > | BuildErrorTrace(a,b) as x' -> > trace Info (fun () -> > $"Supervisor.supervisor_server.BuildFile.handle_build_result / BuildErrorTrace > x': %A{x'}") _locals > Hopac.start (Ch.send errors.traced {|trace=a; message=b|}) > IVar.fill res None > | BuildSkip -> > trace Info (fun () -> > $"Supervisor.supervisor_server.BuildFile.handle_build_result.BuildSkip") _locals > IVar.fill res None > let file_build (s : SupervisorState) mid (tc : ProjStateTC, prepass > : ProjStatePrepass) = > trace Verbose (fun () -> > $"""Supervisor.supervisor_server.BuildFile.file_build / modules: > %A{s.modules.Keys |> SpiralSm.concat ", "} / packages: %A{s.packages.Keys |> > SpiralSm.concat ", "} / package_ids: %A{s.package_ids |> fst |> fun x -> x.Keys > |> SpiralSm.concat ", "}""") _locals > let a,b = tc.files.uids_file.[[mid]] > let x,_x = prepass.files.uids_file.[[mid]] > Hopac.start (a.state >>= fun (has_error',_) -> > b >>= fun (has_error,_) -> > if has_error || has_error' then fatal $"File > {Path.GetFileNameWithoutExtension file} has a type error somewhere in its > path."; Job.unit() else > Stream.foldFun (fun _ (_,_,env) -> env) top_env_emptyPrepass > x.result >>= fun env -> > let body() = > match Map.tryFind "main" env.term with > | Some main -> > let prototypes_instances = > Dictionary(env.prototypes_instances) > let nominals = > let t = HashConsTable() > let d = Dictionary() > env.nominals |> Map.iter (fun k v -> d.Add(k, > t.Add {|v with id=k|})) > d > try > let build codegen backend file_extension = > let (a,_),b = peval > {prototypes_instances=prototypes_instances; nominals=nominals; backend=backend} > main > BuildOk [[{|code = codegen b a; > file_extension = file_extension|}]] > match backend with > | "Gleam" -> build codegenGleam "Gleam" "gleam" > | "Fsharp" -> build codegenFsharp "Fsharp" "fsx" > | "C" -> build CodegenC.codegenC "C" "c" > | "Python + Cuda" -> build > (CodegenPython.codegenPython default_env) "Python" "py" > | "Cuda C++" -> BuildFatalError "The host C++ > backend originally made for FPGAs, and then ported to Cuda has been removed in > v2.10.0 of Spiral. Please use an earlier version to access it." // Date: > 5/8/2024 > | "Python" -> BuildFatalError "The prototype > Python backend has been replaced by the Python + Cuda one in v2.5.0 of Spiral. > Please use an earlier version to access it." // Date: 11/3/2023 > | "UPMEM: Python + C" -> BuildFatalError "The > UPMEM Python + C backend has been replaced by the Python + Cuda one in v2.5.0 of > Spiral. Please use an earlier version to access it." // Date: 11/3/2023 > | "HLS C++" -> BuildFatalError "The HLS C++ > backend has been replaced by the Cuda one in v2.5.0 of Spiral. Please use an > earlier version to access it." // Date: 10/17/2023 > | "Cython*" | "Cython" -> BuildFatalError "The > Cython backend has been replaced by the Python one in v2.3.1 of Spiral. Please > use an earlier version to access it." // Date: 12/27/2022 > | _ -> BuildFatalError $"Cannot recognize the > backend: {backend}" > with > | :? PartEvalTypeError as e -> > BuildErrorTrace(show_trace s e.Data0 e.Data1) > | :? CodegenError as e -> > BuildFatalError(e.Data1) > | :? CodegenErrorWithPos as e -> > BuildErrorTrace(show_trace s e.Data0 e.Data1) > | ex -> > if System.IO.Directory.Exists traceDir then > let guid = System.DateTime.Now |> > SpiralDateTime.new_guid_from_date_time > let trace_file = traceDir </> > $"{guid}_error.json" > async { > try > do! $"{ex}" |> > SpiralFileSystem.write_all_text_async trace_file > with ex -> > trace Critical (fun () -> > $"Supervisor.supervisor_server.BuildFile.file_build / ex: {ex |> > SpiralSm.format_exception}") _locals > } > |> Async.Start > trace Critical (fun () -> > $"Supervisor.supervisor_server.BuildFile.file_build / ex: %A{ex}") _locals > BuildFatalError(ex.Message) > | None -> BuildFatalError $"Cannot find `main` in file > {Path.GetFileNameWithoutExtension file}." > > // The partial evaluator is using too much stack space, so > as a temporary fix, I am running it on a separate thread with much more of it. > let result = IVar() > let thread = new > System.Threading.Thread(System.Threading.ThreadStart(body >> IVar.fill result >> > Hopac.start), 1 <<< 28) // Stack space = 2 ** 28 = 256mb. > thread.Start() > result >>= handle_build_result > ) > let file_find (s : SupervisorState) pdir = > trace Verbose (fun () -> > $"Supervisor.supervisor_server.BuildFile.file_find / pdir: {pdir}") _locals > let uid = (fst s.package_ids).[[pdir]] > match Map.tryFind uid s.packages_infer.ok, Map.tryFind uid > s.packages_prepass.ok with > | Some a, Some b -> > let rec loop = function > | ProjFilesTree.Directory(_,_,l) -> list l > | ProjFilesTree.File(mid,path,_) -> > trace Verbose (fun () -> > $"Supervisor.supervisor_server.BuildFile.file_find.loop | File(mid,path,_) / > path: {path}") _locals > if file = path then file_build s mid (a, b); true > else false > and list l = List.exists loop l > if list b.files.files.tree = false then fatal $"File > {Path.GetFileNameWithoutExtension file} cannot be found in the project > {spiproj_suffix pdir}" > > s > | None, None -> fatal $"Owner of file > {Path.GetFileNameWithoutExtension file} has an error. Location: {spiproj_suffix > pdir}"; s > | _ -> failwith "Compiler error: The project status should be > the same in both infer and prepass." > let update_owner pdir = > let order,dirty_packages = topological_sort' (fst s.graph) > [[pdir]] > let packages_prepass = wdiff_projenvr_prepass default_env (fst > s.package_ids) s.packages s.packages_infer.ok s.packages_prepass > (dirty_packages, order.ToArray()) > file_find {s with packages_prepass = packages_prepass} pdir > let rec find_owner (x : DirectoryInfo) = > if x = null then fatal $"Cannot find the package file of > {file}"; s > else > let x' = x.FullName |> SpiralFileSystem.standardize_path > trace Verbose (fun () -> > $"""Supervisor.supervisor_server.BuildFile.find_owner / x.FullName: {x.FullName > |> SpiralSm.replace "\\" "|"} / x': {x'}""") _locals > let x_ = x > let x = {| FullName = x' |} > if Map.containsKey x.FullName s.packages then update_owner > x.FullName > else find_owner x_.Parent > find_owner (Directory.GetParent(file)) > > Job.iterateServer { > packages = Map.empty > modules = Map.empty > packages_infer = {ok=Map.empty; error=Map.empty} > packages_prepass = {ok=Map.empty; error=Map.empty} > graph = mirrored_graph_empty > package_ids = Map.empty, Map.empty > } loop > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ClientReq > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ClientReq = > | ProjectFileOpen of {|uri : string; spiprojText : string|} > | ProjectFileChange of {|uri : string; spiprojText : string|} > | ProjectFileLinks of {|uri : string|} > | ProjectCodeActionExecute of {|uri : string; action : ProjectCodeAction|} > | ProjectCodeActions of {|uri : string|} > | FileOpen of {|uri : string; spiText : string|} > | FileChange of {|uri : string; spiEdit : SpiEdit|} > | FileDelete of {|uris : string [[]]|} // Also works for project files and > directories. > | FileTokenRange of {|uri : string; range : VSCRange|} > | HoverAt of {|uri : string; pos : VSCPos|} > | BuildFile of {|uri : string; backend : string|} > | Ping of bool > | Exit of bool > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### ClientErrorsRes > > ── fsharp ────────────────────────────────────────────────────────────────────── > type ClientErrorsRes = > | FatalError of string > | TracedError of TracedError > | PackageErrors of {|uri : string; errors : RString list|} > | TokenizerErrors of {|uri : string; errors : RString list|} > | ParserErrors of {|uri : string; errors : RString list|} > | TypeErrors of {|uri : string; errors : RString list|} > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Supervisor > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Supervisor = { > supervisor_ch : SupervisorReq Ch > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## new_server > > ── fsharp ────────────────────────────────────────────────────────────────────── > // #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.ref/7.0.11/ref/n > et7.0/Microsoft.AspNetCore.SignalR.Core.dll" > // #r > @"../../../../../../../.nuget/packages/system.management/9.0.0/lib/netstandard2. > 0/System.Management.dll" > // #r > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > dard2.1/FSharp.Control.AsyncSeq.dll" > // #r > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > 0/System.Reactive.dll" > // #r > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > netstandard2.0/System.Reactive.Linq.dll" > // #r > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com > mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli > ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0 > /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/9.0.0 > /lib/net9.0/Microsoft.AspNetCore.SignalR.Client.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/ > 9.0.0/lib/net9.0/Microsoft.AspNetCore.SignalR.Client.Core.dll" > #r > @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha > rp.Json.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/system.management/9.0.0/lib/netstandard2. > 0/System.Management.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll > " > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstracti > ons.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstractions. > dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions. > dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll" > #endif > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/microsoft.extensions.logging/9.0.0/lib/ne > t9.0/Microsoft.Extensions.Logging.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.extensions.logging.abstractions > /9.0.0/lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.extensions.dependencyinjection. > abstractions/9.0.0/lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstracti > ons.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Hopac > open Hopac.Infixes > // open Common > > ── fsharp ────────────────────────────────────────────────────────────────────── > let new_server () = > let event = Event<ClientErrorsRes> () > // let disposable' = connection.On<string> ("ServerToClientMsg", > event.Trigger) > let stream = > FSharp.Control.AsyncSeq.unfoldAsync > (fun () -> async { > let! msg = event.Publish |> Async.AwaitEvent > return Some (msg, ()) > }) > () > > let error_ch_create msg = > let x = Ch() > Hopac.server (Job.forever (Ch.take x >>= ( > msg >> fun (x : ClientErrorsRes) -> > Hopac.Job.awaitUnitTask ( > task { > event.Trigger x > trace Verbose (fun () -> $"spiral_compiler.new_server / > error_ch_create / x: %A{x}") (fun () -> "") > () > } > |> (fun (x : System.Threading.Tasks.Task<unit>) -> x :> > System.Threading.Tasks.Task) > ) > ))) > x > > let errors : SupervisorErrorSources = { > fatal = error_ch_create FatalError > package = error_ch_create PackageErrors > tokenizer = error_ch_create TokenizerErrors > parser = error_ch_create ParserErrors > typer = error_ch_create TypeErrors > traced = error_ch_create TracedError > } > let supervisor = Ch() > let atten = Ch() > > do Hopac.server (attention_server errors atten) > > let args = [[| "--port"; "0" |]] > let env = parseStartup args > do Hopac.start (supervisor_server env atten errors supervisor) > > let job_null job = > job > |> Hopac.start > task { return null } > let serialize (x : obj) = > match x with > | null -> null > | :? Option<string> as x -> x.Value > | _ -> FSharp.Json.Json.serialize x > let job_val job = > let res = IVar() > let job' = > job res > Hopac.queueAsTask (job' >>=. IVar.read res >>- serialize) > {| > job_null = job_null > job_val = job_val > errors = stream > supervisor = supervisor > |} > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > > let server = new_server<Job<unit>, obj, string option, Job<unit>, unit> () > async { > (* > let fullPath = Supervisor.workspaceRoot </> > "deps/spiral/lib/spiral/package.spiproj" > let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > let! spiprojCode = fullPath |> SpiralFileSystem.read_all_text_async > let projectFileOpenArgs = {| uri = fullPathUri; spiprojText = spiprojCode |} > let! projectFileOpenResult = > job_null (supervisor *<+ Supervisor.SupervisorReq.ProjectFileOpen > projectFileOpenArgs) > |> Async.AwaitTask > trace Info (fun () -> $"Supervisor.ProjectFileOpen / projectFileOpenResult: > %A{projectFileOpenResult}") (fun () -> "") > do! Async.Sleep 500 > > let fullPath = > "C:/home/git/polyglot/target/spiral_Eval/packages/00b4ba49258747d295857ee25629c7 > b59c75cf4ab06958a0e3b0680ae9062d87/package.spiproj" > let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > let! spiprojCode = fullPath |> SpiralFileSystem.read_all_text_async > let projectFileOpenArgs = {| uri = fullPathUri; spiprojText = spiprojCode |} > let! projectFileOpenResult = > job_null (supervisor *<+ Supervisor.SupervisorReq.ProjectFileOpen > projectFileOpenArgs) > |> Async.AwaitTask > trace Info (fun () -> $"Supervisor.ProjectFileOpen / projectFileOpenResult: > %A{projectFileOpenResult}") (fun () -> "") > do! Async.Sleep 500 > *) > let code = "inl main () = 1i32 + 1" > let struct (fullPath, disposable) = SpiralFileSystem.create_temp_dir () > use _ = disposable > let fullPathSpi = fullPath </> "main.spi" > do! code |> SpiralFileSystem.write_all_text_async fullPathSpi > let fullPathSpiproj = fullPath </> "package.spiproj" > do! "packages:\n |core-\nmodules:\n main\n" |> > SpiralFileSystem.write_all_text_async fullPathSpiproj > // let x = code |> Supervisor.persistCode > let fullPathUri = fullPathSpi |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > // let! code = fullPath |> SpiralFileSystem.read_all_text_async > let fileOpenArgs = {| uri = fullPathUri; spiText = code |} > let! fileOpenResult = > server.job_null (server.supervisor *<+ SupervisorReq.FileOpen > fileOpenArgs) > |> Async.AwaitTask > |> Async.runWithTimeoutAsync 20000 > |> Async.map Option.get > trace Info (fun () -> $"spiral_compiler.run / FileOpen / fileOpenResult: > %A{fileOpenResult}") (fun () -> "") > > // do! Async.Sleep 500 > > let backendId = "Fsharp" > let buildFileArgs = {| uri = fullPathUri; backend = backendId |} > let! buildFileResult = > server.job_val (fun res -> server.supervisor *<+ > SupervisorReq.BuildFile(buildFileArgs,res)) > |> Async.AwaitTask > |> Async.runWithTimeoutAsync 15000 > |> Async.map Option.get > trace Info (fun () -> $"spiral_compiler.run / BuildFile / buildFileResult: > %A{buildFileResult}") (fun () -> "") > return buildFileResult > > > (* > let lines = code |> SpiralSm.split "\n" > let fileTokenRangeArgs = > {| > uri = fullPathUri > range = > {| > line = 0 > character = 0 > |}, > {| > line = lines.Length - 1 > character = lines.[[lines.Length - 1]].Length > |} > |} > let! fileTokenRangeResult = > job_val (fun res -> supervisor *<+ > Supervisor.SupervisorReq.FileTokenRange(fileTokenRangeArgs,res)) > |> Async.AwaitTask > trace Info (fun () -> $"Supervisor.FileTokenRange / fileTokenRangeResult: > %A{fileTokenRangeResult.Length}") (fun () -> "") > *) > } > |> Async.runWithTimeout 10000 > |> Option.map (fun x -> x |> SpiralSm.replace "\r\n" "\n") > |> _assertEqual (Some "2\n") > > ── fsharp ────────────────────────────────────────────────────────────────────── > ── [ 2.73s - diagnostics ] ───────────────────────────────────────────────────── > │ input.fsx (5,14)-(5,24) typecheck warning The method or > function 'new_server' should not be given explicit type argument(s) because it > does not declare its type parameters explicitly > > ── [ 2.73s - stdout ] ────────────────────────────────────────────────────────── > │ 00:01:38 i #1 spiral_compiler.run / FileOpen / > fileOpenResult: <null> > │ 00:01:39 i #322 spiral_compiler.run / BuildFile / > buildFileResult: "2 > │ " > │ Some "2 > │ " > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## getParentProcessId > > ── fsharp ────────────────────────────────────────────────────────────────────── > let getParentProcessId () = > if SpiralPlatform.is_windows () |> not > then 0u > else > let pid = System.Diagnostics.Process.GetCurrentProcess().Id > let query = $"SELECT ParentProcessId FROM Win32_Process WHERE ProcessId > = {pid}" > use searcher = new System.Management.ManagementObjectSearcher (query) > use results = searcher.Get () > let data = results |> Seq.cast<System.Management.ManagementObject> > if data |> Seq.isEmpty > then 0u > else data |> Seq.head |> (fun mo -> mo.[["ParentProcessId"]] :?> uint32) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## assemblyName > > ── fsharp ────────────────────────────────────────────────────────────────────── > let assemblyName = System.Reflection.Assembly.GetEntryAssembly().GetName().Name > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## startParentWatcher > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline startParentWatcher () = > if [[ "dotnet-repl" ]] |> List.contains assemblyName |> not then > let parentAsyncChild = async { > let parentProcessId = getParentProcessId () > trace Verbose > (fun () -> "spiral_compiler.startParentWatcher") > (fun () -> $"parentProcessId: {parentProcessId} / {_locals ()}") > > if parentProcessId > 0u then > let parentProcess = parentProcessId |> int |> > System.Diagnostics.Process.GetProcessById > do! parentProcess.WaitForExitAsync () |> Async.AwaitTask > trace Debug > (fun () -> "spiral_compiler.startParentWatcher / Parent > process has exited. Performing cleanup...") > (fun () -> $"{_locals ()}") > System.Threading.Thread.Sleep 1000 > System.Environment.Exit 1 > } > > parentAsyncChild |> Async.Start > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## SpiralHub > > ── fsharp ────────────────────────────────────────────────────────────────────── > // open System > open System.IO > open System.Collections.Generic > > open Hopac > open Hopac.Infixes > open Hopac.Extensions > open Hopac.Stream > > // open Common > open SpiralFileSystem.Operators > > open FSharp.Json > open Microsoft.AspNetCore.SignalR > open Microsoft.AspNetCore.SignalR.Client > > type SpiralHub(supervisor : Supervisor) = > inherit Hub() > > member _.ClientToServerMsg (x : string) = > let job_null job = Hopac.start job; task { return null } > > let serialize (x : obj) = > match x with > | null -> null > | :? Option<string> as x -> x.Value > | _ -> Json.serialize x > > let job_val job = let res = IVar() in Hopac.queueAsTask (job res >>=. > IVar.read res >>- serialize) > let supervisor = supervisor.supervisor_ch > > let client_req = Json.deserialize x > > if Directory.Exists traceDir then > match client_req with > | Ping _ -> () > | _ -> > let req_name = client_req.GetType().Name > let guid = System.DateTime.Now |> > SpiralDateTime.new_guid_from_date_time > let trace_file = traceDir </> $"{guid}_{req_name}.json" > > async { > do! Async.Sleep 500 > try > do! x |> SpiralFileSystem.write_all_text_async > trace_file > with ex -> > trace Critical (fun () -> $"SpiralHub.ClientToServerMsg > / ex: {ex |> SpiralSm.format_exception}") _locals > } > |> Async.Start > > match client_req with > | ProjectFileOpen x -> job_null (supervisor *<+ > SupervisorReq.ProjectFileOpen x) > | ProjectFileChange x -> job_null (supervisor *<+ > SupervisorReq.ProjectFileChange x) > | ProjectCodeActionExecute x -> job_val (fun res -> supervisor *<+ > SupervisorReq.ProjectCodeActionExecute(x,res)) > | ProjectFileLinks x -> job_val (fun res -> supervisor *<+ > SupervisorReq.ProjectFileLinks(x,res)) > | ProjectCodeActions x -> job_val (fun res -> supervisor *<+ > SupervisorReq.ProjectCodeActions(x,res)) > | FileOpen x -> job_null (supervisor *<+ SupervisorReq.FileOpen x) > | FileChange x -> job_null (supervisor *<+ SupervisorReq.FileChange x) > | FileDelete x -> job_null (supervisor *<+ SupervisorReq.FileDelete x) > | FileTokenRange x -> job_val (fun res -> supervisor *<+ > SupervisorReq.FileTokenRange(x,res)) > | HoverAt x -> job_val (fun res -> supervisor *<+ > SupervisorReq.HoverAt(x,res)) > | BuildFile x -> job_val (fun res -> supervisor *<+ > SupervisorReq.BuildFile(x,res)) > | Ping _ -> task { return null } > | Exit _ -> > async { > trace Debug (fun () -> "Supervisor.SpiralHub.ClientToServerMsg / > exiting...") _locals > async { > do! Async.Sleep 300 > System.Diagnostics.Process.GetCurrentProcess().Kill () > } > |> Async.Start > return null > } > |> Async.StartAsTask > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## main > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Microsoft.AspNetCore.Builder > open Microsoft.AspNetCore.Hosting > open Microsoft.Extensions.DependencyInjection > open Microsoft.Extensions.Logging > > let main args = > SpiralTrace.TraceLevel.US0_1 |> set_trace_level > // Scheduler.Global.setCreate { Scheduler.Create.Def with MaxStackSize = > 1024 * 8192 |> Some } > > let env = parseStartup args > > let uri_server = $"http://localhost:{env.port}" > > printfn "Server bound to: %s" uri_server > trace Debug (fun () -> $"pwd: {System.Environment.CurrentDirectory}") > _locals > let dllPath = System.Reflection.Assembly.GetExecutingAssembly().Location |> > System.IO.Path.GetDirectoryName > trace Debug (fun () -> $"dllPath: {dllPath}") _locals > trace Debug (fun () -> $"targetDir: {targetDir}") _locals > let builder = Microsoft.AspNetCore.Builder.WebApplication.CreateBuilder() > builder.Logging.SetMinimumLevel LogLevel.Warning |> ignore > builder.Services > .AddCors() > .AddSignalR(fun x -> > x.MaximumReceiveMessageSize <- 1 <<< 20 // 1mb > x.EnableDetailedErrors <- true > ) |> ignore > > builder.Services > .AddSingleton<Supervisor>(fun s -> > let hub = s.GetService<IHubContext<SpiralHub>>() > let broadcast x = > hub.Clients.All.SendCoreAsync("ServerToClientMsg",[[|Json.serialize x|]]) > > let server = new_server () > > server.errors > |> FSharp.Control.AsyncSeq.mapAsync (fun x -> > broadcast x |> Async.AwaitTask > ) > |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun x -> async { () }) > |> Async.StartChild > |> Async.RunSynchronously > |> ignore > > {supervisor_ch=server.supervisor} > ) |> ignore > builder.WebHost.UseUrls [[|uri_server|]] |> ignore > builder.Logging.SetMinimumLevel(LogLevel.Warning) |> ignore > > let app = builder.Build() > app.UseCors(fun x -> > x.SetIsOriginAllowed(fun _ -> true) > .AllowAnyHeader() > .AllowAnyMethod() > .AllowCredentials() |> ignore > ) |> ignore > app.MapHub<SpiralHub> "" |> ignore > > // use _ = Eval.startTokenRangeWatcher () > startParentWatcher () > // use _ = Eval.startCommandsWatcher uri_server > > printfn $"Starting the Spiral Server. It is bound to: {uri_server}" > app.Run() > 0 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > // SpiralHub.main [[|"--port"; "13805"|]] 00:02:03 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 908553 } 00:02:03 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/spiral/apps/compiler/spiral_compiler.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/spiral/apps/compiler/spiral_compiler.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:04 v #5 ! [NbConvertApp] Converting notebook c:/home/git/spiral/apps/compiler/spiral_compiler.dib.ipynb to html 00:02:05 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:02:05 v #7 ! validate(nb) 00:02:06 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:02:06 v #9 ! return _pygments_highlight( 00:02:33 v #10 ! [NbConvertApp] Writing 4813817 bytes to c:\home\git\spiral\apps\compiler\spiral_compiler.dib.html 00:02:34 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 875 } 00:02:34 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 875 } 00:02:34 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/spiral/apps/compiler/spiral_compiler.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/spiral/apps/compiler/spiral_compiler.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:34 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:02:34 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:02:34 d #16 spiral.run / dib / { exit_code = 0; result_length = 909487 } 00:00:00 d #1 writeDibCode / output: Fs / path: spiral_compiler.dib 00:00:00 d #2 parseDibCode / output: Fs / file: spiral_compiler.dib 00:00:00 d #1 persistCodeProject / packages: [Fable.Core; FSharp.Control.AsyncSeq; FSharpx.Collections; ... ] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: spiral_compiler / hash: / code.Length: 815365 00:00:00 d #2 buildProject / fullPath: c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" --configuration Release --output "C:\home\git\spiral\apps\compiler\dist" --runtime linux-x64"; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" --configuration Release --output "C:\home\git\spiral\apps\compiler\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\spiral_compiler" } } 00:00:01 v #2 > Determining projects to restore... 00:00:01 v #3 > Paket version 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 00:00:01 v #4 > The last full restore is still up to date. Nothing left to do. 00:00:01 v #5 > Total time taken: 0 milliseconds 00:00:04 v #6 > Restored c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj (in 2.18 sec). 00:00:16 v #7 > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(10087,85): warning FS0040: This and other recursive references to the object(s) being defined will be checked for initialization-soundness at runtime through the use of a delayed reference. This is because you are defining one or more recursive objects, rather than recursive functions. This warning may be suppressed by using '#nowarn "40"' or '--nowarn:40'. [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj] 00:00:16 v #8 > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(10612,85): warning FS0040: This and other recursive references to the object(s) being defined will be checked for initialization-soundness at runtime through the use of a delayed reference. This is because you are defining one or more recursive objects, rather than recursive functions. This warning may be suppressed by using '#nowarn "40"' or '--nowarn:40'. [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj] 00:00:16 v #9 > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(11436,43): warning FS0040: This and other recursive references to the object(s) being defined will be checked for initialization-soundness at runtime through the use of a delayed reference. This is because you are defining one or more recursive objects, rather than recursive functions. This warning may be suppressed by using '#nowarn "40"' or '--nowarn:40'. [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj] 00:00:17 v #10 > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(12366,43): warning FS0040: This and other recursive references to the object(s) being defined will be checked for initialization-soundness at runtime through the use of a delayed reference. This is because you are defining one or more recursive objects, rather than recursive functions. This warning may be suppressed by using '#nowarn "40"' or '--nowarn:40'. [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj] 00:00:17 v #11 > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(13032,71): warning FS0040: This and other recursive references to the object(s) being defined will be checked for initialization-soundness at runtime through the use of a delayed reference. This is because you are defining one or more recursive objects, rather than recursive functions. This warning may be suppressed by using '#nowarn "40"' or '--nowarn:40'. [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj] 00:00:38 v #12 > spiral_compiler -> c:\home\git\polyglot\target\Builder\spiral_compiler\bin\Release\net9.0\linux-x64\spiral_compiler.dll 00:00:39 v #13 > spiral_compiler -> C:\home\git\spiral\apps\compiler\dist\ 00:00:40 d #14 runtime.execute_with_options_async / { exit_code = 0; output_length = 3022; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" --configuration Release --output "C:\home\git\spiral\apps\compiler\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\spiral_compiler" } } 00:00:40 d #15 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" --configuration Release --output "C:\home\git\spiral\apps\compiler\dist" --runtime win-x64"; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" --configuration Release --output "C:\home\git\spiral\apps\compiler\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\spiral_compiler" } } 00:00:41 v #16 > Determining projects to restore... 00:00:41 v #17 > Paket version 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 00:00:41 v #18 > The last full restore is still up to date. Nothing left to do. 00:00:41 v #19 > Total time taken: 0 milliseconds 00:00:42 v #20 > Restored c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj (in 339 ms). 00:00:43 v #21 > spiral_compiler -> c:\home\git\polyglot\target\Builder\spiral_compiler\bin\Release\net9.0\win-x64\spiral_compiler.dll 00:00:45 v #22 > spiral_compiler -> C:\home\git\spiral\apps\compiler\dist\ 00:00:45 d #23 runtime.execute_with_options_async / { exit_code = 0; output_length = 478; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" --configuration Release --output "C:\home\git\spiral\apps\compiler\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\spiral_compiler" } } spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: C:\home\git\polyglot\target\Builder\spiral_compiler spiral/apps/compiler/build.ps1 / $targetDir = C:\home\git\polyglot\target\Builder\spiral_compiler / $projectName: spiral_compiler / $env:CI:'' spiral/apps/spiral/build.ps1 / ScriptDir: C:\home\git\spiral\apps\spiral / ResolvedScriptDir: C:\home\git\spiral\apps\spiral polyglot/scripts/core.ps1/GetFullPath / Path: ../../deps/polyglot / Location: C:\home\git\spiral\apps\spiral / ResolvedLocation: C:\home\git\spiral\apps\spiral polyglot/scripts/core.ps1/GetFullPath / FullPath: C:\home\git\spiral\deps\polyglot polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\spiral\deps\polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: C:\home\git\spiral\deps / End: polyglot 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "C:\home\git\spiral\apps\spiral/spiral.dib", "--working-directory", "C:\home\git\polyglot"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/spiral/apps/spiral/spiral.dib", "--output-path", "c:/home/git/spiral/apps/spiral/spiral.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/spiral/apps/spiral/spiral.dib" --output-path "c:/home/git/spiral/apps/spiral/spiral.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = Some( "C:\home\git\polyglot", ) } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # spiral > > ── spiral ────────────────────────────────────────────────────────────────────── > open file_system_operators > open rust.rust_operators > open rust > open sm'_operators > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > open testing > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## get_args > > ── spiral ────────────────────────────────────────────────────────────────────── > inl get_args () = > { > fsharp = "fsharp", { > spi_path = "spi-path", 's' > } > gleam = "gleam", { > gleam_path = "gleam-path", 'g' > target = "target", 't' > deps = "deps", 'd' > } > cuda = "cuda", { > py_path = "py-path", 'p' > env = "env", 'e' > deps = "deps", 'd' > } > fable = "fable", { > fs_path = "fs-path", 'f' > command = "command", 'c' > } > rust = "rust", { > fs_path = "fs-path", 'f' > deps = "deps", 'd' > wasm = "wasm", 'w' > contract = "contract", 'c' > cleanup = "cleanup", 'l' > } > typescript = "typescript", { > fs_path = "fs-path", 'f' > deps = "deps", 'd' > } > python = "python", { > fs_path = "fs-path", 'f' > deps = "deps", 'd' > } > dib = "dib", { > path = "path", 'p' > retries = "retries", 'r' > working_directory = "working-directory", 'w' > } > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## cuda_env > > ── spiral ────────────────────────────────────────────────────────────────────── > union cuda_env = > | Pip > | Poetry > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## gleam_target > > ── spiral ────────────────────────────────────────────────────────────────────── > union gleam_target = > | Erlang > | JavaScript > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## get_command > > ── spiral ────────────────────────────────────────────────────────────────────── > let get_command () = > ##"command" > |> runtime.new_command > |> runtime.command_subcommand_required true > |> runtime.command_subcommand ( > ##(get_args () .fsharp |> fst) > |> runtime.new_command > |> runtime.command_init_arg ((get_args () .fsharp |> snd).spi_path) ( > runtime.arg_required true > ) > ) > |> runtime.command_subcommand ( > ##(get_args () .gleam |> fst) > |> runtime.new_command > |> runtime.command_init_arg ((get_args () .gleam |> snd).gleam_path) ( > runtime.arg_required true > ) > |> runtime.command_init_arg ((get_args () .gleam |> snd).target) ( > real runtime.arg_union `gleam_target ignore > ) > |> runtime.command_init_arg ((get_args () .gleam |> snd).deps) ( > runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]] > >> runtime.arg_num_args_range ( > runtime.new_value_range > false > (am'.Start (1i32 |> convert : unativeint)) > (am'.End eval) > ) > >> runtime.arg_action runtime.Append > ) > ) > |> runtime.command_subcommand ( > ##(get_args () .cuda |> fst) > |> runtime.new_command > |> runtime.command_init_arg ((get_args () .cuda |> snd).py_path) ( > runtime.arg_required true > ) > |> runtime.command_init_arg ((get_args () .cuda |> snd).env) ( > real runtime.arg_union `cuda_env ignore > ) > |> runtime.command_init_arg ((get_args () .cuda |> snd).deps) ( > runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]] > >> runtime.arg_num_args_range ( > runtime.new_value_range > false > (am'.Start (1i32 |> convert : unativeint)) > (am'.End eval) > ) > >> runtime.arg_action runtime.Append > ) > ) > |> runtime.command_subcommand ( > ##(get_args () .fable |> fst) > |> runtime.new_command > |> runtime.command_init_arg ((get_args () .fable |> snd).fs_path) ( > runtime.arg_required true > ) > |> runtime.command_init_arg ((get_args () .fable |> snd).command) ( > id > ) > ) > |> runtime.command_subcommand ( > ##(get_args () .rust |> fst) > |> runtime.new_command > |> runtime.command_init_arg ((get_args () .rust |> snd).fs_path) ( > runtime.arg_required true > ) > |> runtime.command_init_arg ((get_args () .rust |> snd).deps) ( > runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]] > >> runtime.arg_num_args_range ( > runtime.new_value_range > false > (am'.Start (1i32 |> convert : unativeint)) > (am'.End eval) > ) > >> runtime.arg_action runtime.Append > ) > |> runtime.command_init_arg ((get_args () .rust |> snd).wasm) ( > runtime.arg_num_args_range ( > runtime.new_value_range > true > (am'.End eval) > (am'.End fun _ => (1i32 |> convert : unativeint)) > ) > >> runtime.arg_require_equals true > >> runtime.arg_default_missing_value "" > ) > |> runtime.command_init_arg ((get_args () .rust |> snd).contract) ( > runtime.arg_num_args_range ( > runtime.new_value_range > true > (am'.End eval) > (am'.End fun _ => (1i32 |> convert : unativeint)) > ) > >> runtime.arg_require_equals true > >> runtime.arg_default_missing_value "" > ) > |> runtime.command_init_arg ((get_args () .rust |> snd).cleanup) ( > runtime.arg_default_value "true" > >> runtime.arg_action runtime.SetFalse > ) > ) > |> runtime.command_subcommand ( > ##(get_args () .typescript |> fst) > |> runtime.new_command > |> runtime.command_init_arg ((get_args () .typescript |> snd).fs_path) ( > runtime.arg_required true > ) > |> runtime.command_init_arg ((get_args () .typescript |> snd).deps) ( > runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]] > >> runtime.arg_num_args_range ( > runtime.new_value_range > false > (am'.Start (1i32 |> convert : unativeint)) > (am'.End eval) > ) > >> runtime.arg_action runtime.Append > ) > ) > |> runtime.command_subcommand ( > ##(get_args () .python |> fst) > |> runtime.new_command > |> runtime.command_init_arg ((get_args () .python |> snd).fs_path) ( > runtime.arg_required true > ) > |> runtime.command_init_arg ((get_args () .python |> snd).deps) ( > runtime.arg_value_names ;[[ ##"NAME"; ##"VERSION" ]] > >> runtime.arg_num_args_range ( > runtime.new_value_range > false > (am'.Start (1i32 |> convert : unativeint)) > (am'.End eval) > ) > >> runtime.arg_action runtime.Append > ) > ) > |> runtime.command_subcommand ( > ##(get_args () .dib |> fst) > |> runtime.new_command > |> runtime.command_init_arg ((get_args () .dib |> snd).path) ( > runtime.arg_required true > // >> runtime.arg_value_parser (runtime.value_parser_path_buf ()) > ) > |> runtime.command_init_arg ((get_args () .dib |> snd).retries) ( > runtime.arg_value_parser (runtime.value_parser_expr "u8") > ) > |> runtime.command_init_arg ((get_args () .dib |> > snd).working_directory) ( > id > ) > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## fable > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### fable_target > > ── spiral ────────────────────────────────────────────────────────────────────── > union fable_target = > | Rust > | TypeScript > | Python > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### fable_runtime > > ── spiral ────────────────────────────────────────────────────────────────────── > union fable_runtime = > | Wasm : string > | Contract : string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### execute_dotnet_fable > > ── spiral ────────────────────────────────────────────────────────────────────── > let execute_dotnet_fable { workspace_root_external fsproj_path extension > package_dir runtime } = > open runtime > execution_options fun x => { x with > command = > inl platform = > if platform.is_windows () > then "_WINDOWS" > else "_LINUX" > inl platform : string = $'$" --define {!platform}"' > inl runtime = > match runtime with > | Some (runtime : fable_runtime) => > inl runtime = runtime |> reflection.union_to_string |> > sm'.to_upper > $'$" --define {!runtime}"' > | None => "" > $'$"dotnet fable \\\"{!fsproj_path}\\\" --optimize --lang > {!extension} --extension .{!extension} --outDir > \\\"{!package_dir}\\\"{!platform}{!runtime}"' > working_directory = workspace_root_external |> resultm.box |> > resultm.ok' > } > |> execute_retry 3u8 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### get_package_dir > > ── spiral ────────────────────────────────────────────────────────────────────── > let get_package_dir { workspace_root target name hash } = > inl dir = workspace_root </> "target/spiral" </> name > match hash, (target : option fable_target) with > | Some hash, Some target => dir </> "packages" </> (target |> > reflection.union_to_string) </> hash > | _ => dir > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### persist_code_project > > ── spiral ────────────────────────────────────────────────────────────────────── > let persist_code_project { workspace_root package_dir packages modules name code > } = > package_dir |> file_system.create_dir |> ignore > > inl fs_path = package_dir </> $'$"{!name}.fs"' |> file_system.normalize_path > code |> file_system.write_all_text_exists fs_path > > inl modules_code = > modules > |> listm.map fun path => > inl path = workspace_root </> path > $'$"<Compile Include=\\\"{!path}\\\" />"' : string > |> listm'.box > |> seq.of_list' > |> sm'.concat "\\n " > > inl packages_code = > packages > |> listm.map fun (package : string), (version : string) => > $'$"<PackageReference Include=\\\"{!package}\\\" > Version=\\\"{!version}\\\" />"' : string > |> listm'.box > |> seq.of_list' > |> sm'.concat "\\n " > > inl fsproj_path = package_dir </> $'$"{!name}.fsproj"' |> > file_system.normalize_path > inl fsproj_code : string = > $'$"<Project Sdk=\\\"Microsoft.NET.Sdk\\\">"' > ++\# $'$"<PropertyGroup>"' > ++\# $'$" <TargetFramework>net9.0</TargetFramework>"' > ++\# $'$" <LangVersion>preview</LangVersion>"' > ++\# $'$" <RollForward>Major</RollForward>"' > ++\# $'$" <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>"' > ++\# $'$" <PublishAot>false</PublishAot>"' > ++\# $'$" <PublishTrimmed>false</PublishTrimmed>"' > ++\# $'$" <PublishSingleFile>true</PublishSingleFile>"' > ++\# $'$" <SelfContained>true</SelfContained>"' > ++\# $'$" <Version>0.0.1-alpha.1</Version>"' > ++\# $'$" <OutputType>Exe</OutputType>"' > ++\# $'$" <ServerGarbageCollection>true</ServerGarbageCollection>"' > ++\# $'$" > <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>"' > ++\# $'$"</PropertyGroup>"' > > ++\# $'$"<PropertyGroup > Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'FreeBSD\'))\\\">"' > ++\# $'$" <DefineConstants>_FREEBSD</DefineConstants>"' > ++\# $'$"</PropertyGroup>"' > > ++\# $'$"<PropertyGroup > Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'Linux\'))\\\">"' > ++\# $'$" <DefineConstants>_LINUX</DefineConstants>"' > ++\# $'$"</PropertyGroup>"' > > ++\# $'$"<PropertyGroup > Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'OSX\'))\\\">"' > ++\# $'$" <DefineConstants>_OSX</DefineConstants>"' > ++\# $'$"</PropertyGroup>"' > > ++\# $'$"<PropertyGroup > Condition=\\\"$([[MSBuild]]::IsOSPlatform(\'Windows\'))\\\">"' > ++\# $'$" <DefineConstants>_WINDOWS</DefineConstants>"' > ++\# $'$"</PropertyGroup>"' > > ++\# $'$"<ItemGroup>"' > ++\# $'$" {!modules_code}"' > ++\# $'$" <Compile Include=\\\"{!fs_path}\\\" />"' > ++\# $'$"</ItemGroup>"' > > ++\# $'$"<ItemGroup>"' > ++\# $'$" {!packages_code}"' > ++\# $'$"</ItemGroup>"' > > ++\# $'$"</Project>"' > > fsproj_code |> file_system.write_all_text_exists fsproj_path > > fsproj_path > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### publish_project > > ── spiral ────────────────────────────────────────────────────────────────────── > inl publish_project runtime' output_dir path = > inl full_path = path |> file_system.get_full_path > inl file_dir = full_path |> file_system.directory_get_parent |> > optionm'.default_value' "" > inl extension = full_path |> file_system.get_extension > > trace Debug > fun () => "publish_project" > fun () => { full_path } > > match extension with > | "fsproj" => () > | _ => failwith $'$"app.publish_project / Invalid project file / extension: > {!extension}"' > > inl runtimes = > runtime' > |> optionm.map listm.singleton > |> optionm'.default_value [[ "linux-x64"; "win-x64" ]] > > inl output_dir = output_dir |> optionm'.default_value "dist" > > runtimes > |> listm.map fun runtime' => > runtime.execution_options fun x => { x with > command = $'$@@"dotnet publish \"\"{!path}\"\" --configuration > Release --output \"\"{!output_dir}\"\" --runtime {!runtime'}"' > working_directory = file_dir |> Some |> optionm'.box > } > |> runtime.execute_with_options > |> fst > |> listm'.sum > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### publish_code > > ── spiral ────────────────────────────────────────────────────────────────────── > inl publish_code { workspace_root runtime packages modules output_dir name code > } = > inl package_dir = get_package_dir { workspace_root name target = None; hash > = None } > inl fsproj_path = persist_code_project { workspace_root package_dir packages > modules name code } > inl exit_code = fsproj_path |> publish_project runtime output_dir > if exit_code <>. 0 then > trace Critical > fun () => "publish_code" > fun () => { > code = code |> sm'.ellipsis_end 400 > fsproj_text = fsproj_path |> file_system.read_all_text > } > exit_code > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d encoding_rs encoding_rs_io regex > > publish_code { > workspace_root = file_system.get_workspace_root () > runtime = None > packages = [[]] > modules = [[]] > output_dir = None > name = "test1" > code = "1 + 1 |> ignore" > } > |> _assert_eq 0 > > ── [ 59.69s - return value ] ─────────────────────────────────────────────────── > │ 00:00:00 v #1 file_system.create_dir / { dir = > c:/home/git\polyglot\target/spiral\test1 } > │ 00:00:00 d #2 publish_project / { full_path = > \\?\C:\home\git\polyglot\target\spiral\test1\test1.fsproj } > │ 00:00:00 d #3 runtime.execute_with_options / { > file_name = dotnet; arguments = ["publish", > "c:/home/git/polyglot/target/spiral/test1/test1.fsproj", "--configuration", > "Release", "--output", "dist", "--runtime", "win-x64"]; options = { command = > dotnet publish "c:/home/git/polyglot/target/spiral/test1/test1.fsproj" > --configuration Release --output "dist" --runtime win-x64; cancellation_token = > None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; > trace = true; working_directory = Some( > │ "\\?\C:\home\git\polyglot\target\spiral\test1", > │ ) } } > │ 00:00:00 v #4 > Determining projects to restore... > │ 00:00:01 v #5 > Restored > c:\home\git\polyglot\target\spiral\test1\test1.fsproj (in 288 ms). > │ 00:00:01 v #6 > test1 -> > c:\home\git\polyglot\target\spiral\test1\bin\Release\net9.0\win-x64\test1.dll > │ 00:00:02 v #7 > test1 -> > \\?\C:\home\git\polyglot\target\spiral\test1\dist\ > │ 00:00:03 v #8 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 265 } > │ 00:00:03 d #9 runtime.execute_with_options / { > file_name = dotnet; arguments = ["publish", > "c:/home/git/polyglot/target/spiral/test1/test1.fsproj", "--configuration", > "Release", "--output", "dist", "--runtime", "linux-x64"]; options = { command = > dotnet publish "c:/home/git/polyglot/target/spiral/test1/test1.fsproj" > --configuration Release --output "dist" --runtime linux-x64; cancellation_token > = None; environment_variables = Array(MutCell([])); on_line = None; stdin = > None; trace = true; working_directory = Some( > │ "\\?\C:\home\git\polyglot\target\spiral\test1", > │ ) } } > │ 00:00:03 v #10 > Determining projects to restore... > │ 00:00:04 v #11 > Restored > c:\home\git\polyglot\target\spiral\test1\test1.fsproj (in 288 ms). > │ 00:00:05 v #12 > test1 -> > c:\home\git\polyglot\target\spiral\test1\bin\Release\net9.0\linux-x64\test1.dll > │ 00:00:05 v #13 > test1 -> > \\?\C:\home\git\polyglot\target\spiral\test1\dist\ > │ 00:00:06 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 267 } > │ { name = __assert_eq; actual = 0; expected = 0 } > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d encoding_rs encoding_rs_io regex > > publish_code { > workspace_root = file_system.get_workspace_root () > runtime = None > packages = [[]] > modules = [[]] > output_dir = None > name = "test2" > code = "1 + a |> ignore" > } > |> _assert_eq 2 > > ── [ 56.55s - return value ] ─────────────────────────────────────────────────── > │ 00:00:00 v #1 file_system.create_dir / { dir = > c:/home/git\polyglot\target/spiral\test2 } > │ 00:00:00 d #2 publish_project / { full_path = > \\?\C:\home\git\polyglot\target\spiral\test2\test2.fsproj } > │ 00:00:00 d #3 runtime.execute_with_options / { > file_name = dotnet; arguments = ["publish", > "c:/home/git/polyglot/target/spiral/test2/test2.fsproj", "--configuration", > "Release", "--output", "dist", "--runtime", "win-x64"]; options = { command = > dotnet publish "c:/home/git/polyglot/target/spiral/test2/test2.fsproj" > --configuration Release --output "dist" --runtime win-x64; cancellation_token = > None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; > trace = true; working_directory = Some( > │ "\\?\C:\home\git\polyglot\target\spiral\test2", > │ ) } } > │ 00:00:00 v #4 > Determining projects to restore... > │ 00:00:01 v #5 > Restored > c:\home\git\polyglot\target\spiral\test2\test2.fsproj (in 282 ms). > │ 00:00:02 v #6 > > c:\home\git\polyglot\target\spiral\test2\test2.fs(1,5): error FS0039: The value > or constructor 'a' is not defined. > [c:\home\git\polyglot\target\spiral\test2\test2.fsproj] > │ 00:00:03 v #7 runtime.execute_with_options / result / { > exit_code = 1; std_trace_length = 285 } > │ 00:00:03 d #8 runtime.execute_with_options / { > file_name = dotnet; arguments = ["publish", > "c:/home/git/polyglot/target/spiral/test2/test2.fsproj", "--configuration", > "Release", "--output", "dist", "--runtime", "linux-x...0mv #12 > runtime.execute_with_options / result / { exit_code = 1; std_trace_length = 285 > } > │ 00:00:06 c #13 publish_code / { code = 1 + a |> ignore; > fsproj_text = <Project Sdk="Microsoft.NET.Sdk"> > │ <PropertyGroup> > │ <TargetFramework>net9.0</TargetFramework> > │ <LangVersion>preview</LangVersion> > │ <RollForward>Major</RollForward> > │ <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> > │ <PublishAot>false</PublishAot> > │ <PublishTrimmed>false</PublishTrimmed> > │ <PublishSingleFile>true</PublishSingleFile> > │ <SelfContained>true</SelfContained> > │ <Version>0.0.1-alpha.1</Version> > │ <OutputType>Exe</OutputType> > │ <ServerGarbageCollection>true</ServerGarbageCollection> > │ > <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> > │ </PropertyGroup> > │ <PropertyGroup > Condition="$([MSBuild]::IsOSPlatform('FreeBSD'))"> > │ <DefineConstants>_FREEBSD</DefineConstants> > │ </PropertyGroup> > │ <PropertyGroup > Condition="$([MSBuild]::IsOSPlatform('Linux'))"> > │ <DefineConstants>_LINUX</DefineConstants> > │ </PropertyGroup> > │ <PropertyGroup Condition="$([MSBuild]::IsOSPlatform('OSX'))"> > │ <DefineConstants>_OSX</DefineConstants> > │ </PropertyGroup> > │ <PropertyGroup > Condition="$([MSBuild]::IsOSPlatform('Windows'))"> > │ <DefineConstants>_WINDOWS</DefineConstants> > │ </PropertyGroup> > │ <ItemGroup> > │ > │ <Compile > Include="c:/home/git/polyglot/target/spiral/test2/test2.fs" /> > │ </ItemGroup> > │ <ItemGroup> > │ > │ </ItemGroup> > │ </Project> } > │ { name = __assert_eq; actual = 2; expected = 2 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### read_file > > ── spiral ────────────────────────────────────────────────────────────────────── > inl read_file path = > inl code = > path > |> file_system.read_all_text > |> sm'.replace_regex $'@@"(?P<a> *)(?P<b>let\\s+main\\s+.*?\\s*=)"' > "$a[[<EntryPoint>]]\n$a$b" > inl code_trim = code |> sm'.trim_end [[]] > if code_trim |> sm'.ends_with "\\n()" > then code_trim |> sm'.slice 0i64 ((code_trim |> sm'.length) - 3) > else code > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### persist_file > > ── spiral ────────────────────────────────────────────────────────────────────── > inl persist_file { workspace_root package_dir packages modules path } = > inl full_path = path |> file_system.get_full_path > inl name = full_path |> file_system.get_file_name_without_extension > inl code = full_path |> read_file > persist_code_project { workspace_root package_dir packages modules name code > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### publish_file > > ── spiral ────────────────────────────────────────────────────────────────────── > inl publish_file { workspace_root runtime packages modules path } = > inl full_path = path |> file_system.get_full_path > inl dir = full_path |> file_system.directory_get_parent |> > optionm'.default_value' "" > publish_code { > workspace_root > runtime > packages > modules > output_dir = dir </> "dist" |> Some > name = full_path |> file_system.get_file_name_without_extension > code = full_path |> read_file > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rust > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### get_workspace_cargo_toml_content > > ── spiral ────────────────────────────────────────────────────────────────────── > inl get_workspace_cargo_toml_content { workspace_root } : string = > inl workspace_root = workspace_root |> file_system.normalize_path > $'$"cargo-features = [[\\\"profile-rustflags\\\"]]"' > ++\# $'$""' > ++\# $'$"[[workspace]]"' > ++\# $'$"resolver = \\\"2\\\""' > ++\# $'$"members = [[\\\"packages/Rust/*\\\"]]"' > ++\# $'$""' > ++\# $'$"[[workspace.dependencies.fable_library_rust]]"' > ++\# $'$"path = > \\\"{!workspace_root}/lib/rust/fable/fable_modules/fable-library-rust\\\""' > ++\# $'$"default-features = false"' > ++\# $'$"features = [[]]"' > ++\# $'$""' > ++\# $'$"[[workspace.dependencies]]"' > ++\# $'$"inline_colorization = \\\"~0.1\\\""' > ++\# $'$""' > ++\# $'$"[[profile.release]]"' > ++\# $'$"codegen-units = 1"' > ++\# $'$"opt-level = \\\"z\\\""' > ++\# $'$"lto = true"' > ++\# $'$"debug = false"' > ++\# $'$"panic = \\\"abort\\\""' > ++\# $'$"overflow-checks = true"' > ++\# $'$"rustflags = [[\\\"-C\\\", \\\"link-arg=-s\\\"]]"' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### get_cargo_toml_content > > ── spiral ────────────────────────────────────────────────────────────────────── > inl get_cargo_toml_content { hash_hex runtime deps static_do_bindings } : string > = > $'$"cargo-features = [[\\\"edition2024\\\"]]"' > ++\# $'$""' > ++\# $'$"[[package]]"' > ++\# $'$"name = \\\"spiral_{!hash_hex}\\\""' > ++\# $'$"version = \\\"0.0.1\\\""' > ++\# $'$"edition = \\\"2024\\\""' > ++\# $'$""' > ++\# $'$"[[dependencies]]"' > ++\# ( > if runtime <>. None > then $'$"fable_library_rust = {{ workspace = true }}"' > else > $'$"fable_library_rust = {{"' > +. $'$" workspace = true,"' > +. $'$" features = [["' > +. ( > if static_do_bindings > then $'$"\\\"static_do_bindings\\\", \\\"datetime\\\", > \\\"guid\\\", \\\"threaded\\\""' > else $'$"\\\"datetime\\\", \\\"guid\\\", \\\"threaded\\\""' > ) > +. $'$"]]"' > +. $'$"}}"' > ) > ++\# $'$"inline_colorization = {{ workspace = true }}"' > ++\# $'$"{!deps}"' > ++\# $'$""' > ++\# ( > if runtime = None then > $'$"[[[[bin]]]]"' > ++\# $'$"name = \\\"spiral_{!hash_hex}\\\""' > else > $'$"[[lib]]"' > ++\# $'$"crate-type = [[\\\"cdylib\\\"]]"' > ) > ++\# $'$"path = \\\"spiral.rs\\\""' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### get_empty_cargo_toml_content > > ── spiral ────────────────────────────────────────────────────────────────────── > inl get_empty_cargo_toml_content () = > inl guid = date_time.now () |> date_time.new_guid_from_date_time |> > sm'.obj_to_string > $'$"[[package]]"' > ++\# $'$"name = \\\"spiral_{!guid}\\\""' > ++\# $'$"version = \\\"0.0.1\\\""' > ++\# $'$"edition = \\\"2021\\\""' > ++\# $'$""' > ++\# $'$"[[[[bin]]]]"' > ++\# $'$"name = \\\"spiral_{!guid}\\\""' > ++\# $'$"path = \\\"spiral.rs\\\""' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### process_rust > > ── spiral ────────────────────────────────────────────────────────────────────── > inl process_rust { fs_path deps trace_level runtime cleanup } = > open runtime > > inl extension = "rs" > inl code = fs_path |> file_system.read_all_text > > inl hash_hex = { extension code runtime } |> sm'.format |> crypto.hash_text > > inl workspace_name = "spiral" > > inl workspace_root_external = file_system.get_workspace_root_external () > inl workspace_root = workspace_root_external |> resultm.box |> > resultm.unwrap_or_else id > > inl package_dir = > get_package_dir { workspace_root name = workspace_name; target = Some > Rust; hash = Some hash_hex } > > inl fsproj_path = > persist_code_project { > workspace_root > package_dir > packages = [[ "Fable.Core", "4.3.0" ]] > modules = [[]] > name = workspace_name > code > } > > inl workspace_dir = package_dir </> "../../.." > inl workspace_cargo_toml_path = workspace_dir </> "Cargo.toml" > > if workspace_cargo_toml_path |> file_system.file_exists |> not > then get_empty_cargo_toml_content () |> file_system.write_all_text > workspace_cargo_toml_path > > inl cargo_toml_path = package_dir </> "Cargo.toml" > > if cargo_toml_path |> file_system.file_exists |> not > then get_empty_cargo_toml_content () |> file_system.write_all_text > cargo_toml_path > > inl lib_link_target_path = workspace_root </> > "lib/rust/fable/fable_modules/fable-library-rust" > inl lib_link_path = package_dir </> "fable_modules/fable-library-rust" > > lib_link_path |> file_system.link_directory lib_link_target_path > > inl exit_code, dotnet_fable_result = > execute_dotnet_fable { workspace_root_external fsproj_path extension > package_dir runtime } > > inl result' = { > extension = Some extension > code = None > code_path = None > output = None > } > > if exit_code <>. 0 then > trace Critical > fun () => "spiral.process_rust / dotnet fable error" > fun () => { exit_code dotnet_fable_result } > { result' with > output = Some dotnet_fable_result > } > else > inl deps = > inl deps = > if runtime = None > then deps > else > // TODO: simplify > inl has_near_sdk = > deps > |> am'.vec_filter (sm'.from_std_string >> sm'.contains > "near-sdk") > |> am'.vec_len > |> i32 > |> fun n => n > 0 > // TODO: simplify with ++ > if has_near_sdk > then deps > else deps |> am'.vec_extend (;[[ "near-sdk" |> > sm'.to_std_string ]] |> am'.to_vec) > deps > |> am'.vec_map fun dep => > inl dep = dep |> sm'.from_std_string > if dep |> sm'.contains "=" > then dep > elif dep |> sm'.ends_with "]]" > then dep |> sm'.replace "[[" $'$"={{version=\'*\',features=[["' > |> fun x => $'$"{!x}}}"' > else $'$"{!dep}=\'*\'"' > |> am'.from_vec > |> fun x => x : _ i32 _ > |> seq.of_array' > |> sm'.concat "\n" > > inl new_code_path = package_dir </> $'$"{!workspace_name}.{!extension}"' > inl new_code = new_code_path |> file_system.read_all_text > > inl on_startup_text = "on_startup!" ++# (join "(") > inl method0_fn_text = " method0" ++# (join "(") > inl static_do_bindings = > (new_code |> sm'.contains on_startup_text) > && (new_code |> sm'.contains method0_fn_text |> not) > inl cargo_toml_content = > get_cargo_toml_content { hash_hex runtime deps static_do_bindings } > inl workspace_cargo_toml_content = get_workspace_cargo_toml_content { > workspace_root } > > cargo_toml_content |> file_system.write_all_text_exists cargo_toml_path > workspace_cargo_toml_content |> file_system.write_all_text_exists > workspace_cargo_toml_path > > inl range_rs_path = lib_link_path </> "src/Range.rs" > if range_rs_path |> file_system.file_exists then > inl text = range_rs_path |> file_system.read_all_text > text > |> sm'.replace "use crate::String_::fromCharCode;" "use > crate::String_::fromChar;" > |> sm'.replace "fromCharCode(c)" "std::char::from_u32(c).unwrap()" > |> file_system.write_all_text_exists range_rs_path > > inl exit_code, cargo_fmt_result = > fun () => > inl exit_code, result = > execution_options fun x => { x with > command = $'$"cargo fmt --manifest-path > \\\"{!cargo_toml_path}\\\" --"' > working_directory = workspace_root_external |> > resultm.box |> resultm.ok' > } > |> execute_with_options > > inl return () = > if exit_code = 0 > then Ok (exit_code, result) > else Error (exit_code, result) > > if result |> sm'.contains "failed to load manifest for workspace > member" |> not > then return () > else > inl missing_toml_path = > "failed to read `(?<a>.*?Cargo.toml)`" > |> sm'.new_regex > |> resultm.unwrap' > |> sm'.regex_captures result > |> am'.from_vec > |> fun x => x : _ i32 _ > |> am'.try_item 0 > |> optionm.map (mapm.get "a" >> optionm'.unbox) > |> optionm'.flatten > > match missing_toml_path with > | None => Error (exit_code, result) > | Some missing_toml_path => > if missing_toml_path |> file_system.file_exists |> not > then > missing_toml_path > |> file_system.directory_get_parent > |> optionm'.default_value' "" > |> file_system.create_dir > |> ignore > > get_empty_cargo_toml_content () > |> file_system.write_all_text missing_toml_path > return () > |> retry_fn' 3u8 > > if exit_code <>. 0 then > trace Critical > fun () => "spiral.process_rust / cargo fmt error" > fun () => { exit_code cargo_fmt_result } > > inl new_code = new_code_path |> file_system.read_all_text > > inl main_code_header = > "pub fn main() -> Result<(), String> " ++# (join "{") > > inl main_code : string = > if runtime = None > then "" > else > $'$"#[[near_sdk::near_bindgen]]"' > ++\# $'$"#[[derive(near_sdk::PanicOnDefault)]]"' > ++\# $'$"pub struct MainState {{"' > ++\# $'$"}}"' > ++\# $'$""' > ++\# $'$"#[[near_sdk::near_bindgen]]"' > ++\# $'$"impl MainState {{"' > ++\# $'$" pub fn state_main() {{"' > ++\# $'$" Spiral::method0();"' > ++\# $'$" }}"' > ++\# $'$"}}"' > ++\# ( > if runtime = None && (new_code |> sm'.contains (on_startup_text > ++# "Spiral::method0()")) > then $'$"{!main_code_header} Ok(Spiral::method0()) }}"' > else $'$"{!main_code_header} Ok(()) }}"' > ) > > inl cached = new_code |> sm'.contains main_code_header > > inl new_code' = $'$"{!new_code}\\n\\n{!main_code}\\n"' > inl new_code = > if cached > then new_code > else > inl runtime_contract = > match runtime with > | Some (Contract _) => true > | _ => false > > new_code' > |> sm'.replace > ("),)" ++# !\($'"\\\";\\\".into()"')) > "));" > |> sm'.replace > ("},)" ++# !\($'"\\\";\\\".into()"')) > "});" > |> sm'.replace_regex > "\\s\\sdefaultOf\\(\\);" > " defaultOf::<()>();" > |> sm'.replace_regex > "\\s\\sgetZero\\(\\);" > " getZero::<()>();" > |> sm'.replace > ("(&e.get_Curren" ++# !\($'"\\\"t\\\".into()"')) > "(e.get_Current" > |> sm'.replace > ("getNull" ++# !\($'"\\\"::<()>()\\\".into()"')) > "fable_library_rust::Native_::getZero()" > > > |> sm'.replace > ("null::<()>(" ++# !\($'$"\\\")\\\".into()"')) > "fable_library_rust::Native_::getZero()" > |> sm'.replace_regex > "null::<\\(\\)>\\(\\)" > "fable_library_rust::Native_::getZero()" > > |> sm'.replace_regex > "\\(null::<\\(\\)>\\(\\)" > "(null()" > |> sm'.replace_regex > " null::<\\(\\)>\\(\\)" > " null()" > |> sm'.replace_regex > "unbox::<bool>\\(null\\(\\)" > "false" > |> sm'.replace_regex > "unbox::<string>\\(null\\(\\)" > "fable_library_rust::Native_::getZero()" > |> sm'.replace_regex > "unbox::<i32>\\(null\\(\\)" > "0" > |> sm'.replace_regex > "unbox::<i32>\\(null::<\\(\\)>\\(\\)\\)" > "0" > |> sm'.replace_regex > "null\\(\\)" > "fable_library_rust::Native_::getZero()" > > |> sm'.replace_regex > "\\s\\sfable_library_rust::Native_::getZero\\(\\);" > " fable_library_rust::Native_::getZero::<()>();" > > |> sm'.replace > " gen:" > " f:" > |> sm'.replace_regex > "\\(gen\\(" > "(f(" > |> sm'.replace_regex > "\\(gen," > "(f," > |> sm'.replace > " gen " > " f " > > |> sm'.replace > "::Slice'_" > "::Slice__" > |> sm'.replace > " Slice'_" > " Slice__" > |> sm'.replace > ("defaultOf()" ++# !\($'"\\\",\\\".into()"')) > "defaultOf::<std::sync::Arc<dyn IDisposable>>()," > |> sm'.replace > ("__self" ++# !\($'"\\\"__.\\\".into()"')) > "self." > |> sm'.replace > ("_self" ++# !\($'"\\\"_.\\\".into()"')) > "self." > |> sm'.replace > ("get_or_insert_wit" ++# !\($'"\\\"h\\\".into()"')) > "get_or_init" > |> sm'.replace > ("use > fable_library_rust::System::Collections::Concurrent::ConcurrentStack_1" ++# > !\($'"\\\";\\\".into()"')) > "type ConcurrentStack_1<T> = T;" > |> sm'.replace > ("use fable_library_rust::System::TimeZoneInfo" ++# > !\($'"\\\";\\\".into()"')) > "type TimeZoneInfo = i64;" > |> sm'.replace > ("use > fable_library_rust::System::Threading::Tasks::TaskCanceledException" ++# > !\($'"\\\";\\\".into()"')) > "type TaskCanceledException = ();" > |> if static_do_bindings > then id > else sm'.replace > on_startup_text > ("// " ++# on_startup_text) > |> if runtime_contract |> not > then id > else sm'.replace > ("use fable_library_rust::DateTime_::DateTime" ++# > ";") > "type DateTime = ();" > > if not cached then > new_code > |> file_system.write_all_text_exists new_code_path > > inl command = > if runtime <> None > then $'$"cargo +nightly-2024-07-14 build --release --target > wasm32-unknown-unknown --manifest-path \\\"{!cargo_toml_path}\\\""' > else $'$"cargo run --manifest-path \\\"{!cargo_toml_path}\\\""' > inl environment_variables = > if runtime <> None > then ;[[]] > else > inl fast = false > ;[[ > "TRACE_LEVEL", "Verbose" > "RUSTC_WRAPPER", "sccache" > "RUST_BACKTRACE", "full" > "RUSTFLAGS", > if fast > then "-C prefer-dynamic -C strip=symbols -C link-arg=-s -C > debuginfo=0" > else "-C prefer-dynamic" > ]] > inl exit_code, cargo_result = > execution_options fun x => { x with > command > environment_variables > working_directory = workspace_root_external |> resultm.box |> > resultm.ok' > } > |> execute_with_options > > inl result = > if runtime = None then > inl external_command = > inl vars = > a environment_variables > |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : > string > |> fun x => x : _ i32 _ > |> seq.of_array > |> sm'.concat ";" > inl command = > a ;[[ > vars > command > ]] > |> fun x => x : _ i32 _ > |> seq.of_array > |> sm'.concat ";" > $'$"pwsh -c \'{!command}\'"' : string > if exit_code <>. 0 then > trace Critical > fun () => "spiral.process_rust / error" > fun () => { exit_code new_code_path external_command > cleanup cargo_result } > result' > else > inl output = > try > fun () => > cargo_result > |> sm'.split "\n" > |> fun x => a x : _ i32 _ > |> am'.skip_while fun line => > (line |> sm'.contains "profile [[optimized]] > target" |> not) > && (line |> sm'.contains "profile > [[unoptimized]] target" |> not) > && (line |> sm'.contains "profile > [[unoptimized + debuginfo]] target" |> not) > |> am'.skip 2 > |> seq.of_array > |> sm'.concat "\n" > fun ex => > trace Critical > fun () => "spiral.process_rust / Exception" > fun () => { ex new_code_path > external_command cargo_result } > None > |> optionm'.box > |> optionm'.unwrap > { result' with > code = Some new_code > code_path = Some new_code_path > output = Some output > } > else > inl wasm_path : string = > > $'$"target/spiral/{!workspace_name}/target/wasm32-unknown-unknown/release/spiral > _{!hash_hex}.wasm"' > > inl command = > inl invoke_block_path = "scripts/invoke-block.ps1" > inl spiral_wasm_command : string = > inl runtime_cmd = > match runtime with > | Some (Wasm cmd) => cmd > | Some (Contract cmd) => cmd > | _ => "" > $'$"\'deps/spiral/workspace/target/release/spiral_wasm > -w {!wasm_path} -t debug {!runtime_cmd}\'"' > inl automation = "AUTOMATION" |> > env.get_environment_variable > $'$"pwsh -c \\\"pwsh {!invoke_block_path} > {!spiral_wasm_command} -Linux -EnvironmentVariables > AUTOMATION={!automation}\`nNEAR_RPC_TIMEOUT_SECS=100\\\""' > > if exit_code = 0 then > inl exit_code, spiral_wasm_result = > execution_options fun x => { x with > command > working_directory = workspace_root |> optionm'.some' > } > |> execute_with_options > > if exit_code = 0 then > { result' with > code = Some new_code > code_path = Some new_code_path > output = Some spiral_wasm_result > } > else > trace Critical > fun () => "spiral.process_rust / wasm error" > fun () => { > exit_code new_code_path cargo_result cleanup > spiral_wasm_result = > $'$"\\n{!spiral_wasm_result}"' : string > } > result' > else > trace Critical > fun () => "spiral.process_rust / cargo error" > fun () => { > exit_code new_code_path wasm_path command cleanup > cargo_result = $'$"\\n{!cargo_result}"' : string > } > result' > > if cleanup then > inl cleanup = > inl build_target = > if runtime <> None > then "wasm32-unknown-unknown/release" > else "debug" > > [[ ".d"; ".exe"; ".pdb"; ".wasm"; "" ]] > |> listm.map fun ext => > workspace_dir </> > $'$"target/{!build_target}/spiral_{!hash_hex}{!ext}"' > |> listm.map fun path => path, path |> file_system.file_exists > > trace Verbose > fun () => "spiral.process_rust / cleanup" > fun () => { new_code_path cleanup } > > cleanup > |> listm'.filter snd > |> listm.iter (fst >> file_system.file_delete) > > result > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## dib > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### process_dib > > ── spiral ────────────────────────────────────────────────────────────────────── > inl process_dib { path retries working_directory } = > inl exit_code, repl_result = > let rec loop retry = > inl exit_code, repl_result = > runtime.execution_options fun x => { x with > command = $'$"dotnet repl --exit-after-run --run > \\\"{!path}\\\" --output-path \\\"{!path}.ipynb\\\""' > environment_variables = ;[[ > "TRACE_LEVEL", "Verbose" > "AUTOMATION", "True" > ]] > trace = false > working_directory = working_directory |> optionm'.box > } > |> runtime.execute_with_options > > if exit_code = 0 || retry >= retries > then exit_code, repl_result > else > trace Debug > fun () => "spiral.run / repl error" > fun () => { exit_code repl_result retry = > $'$"{!retry}/{!retries}"' : string } > loop (retry + 1) > loop 1 > > inl exit_code, result = > if exit_code <>. 0 > then exit_code, repl_result > else > inl exit_code, jupyter_result = > runtime.execution_options fun x => { x with > command = $'$"jupyter nbconvert \\\"{!path}.ipynb\\\" --to > html --HTMLExporter.theme=dark"' > } > |> runtime.execute_with_options > > trace Debug > fun () => "spiral.run / dib / jupyter nbconvert" > fun () => { exit_code jupyter_result_length = jupyter_result |> > sm'.length : i32 } > > if exit_code <>. 0 > then exit_code, $'$"repl_result: {!repl_result}\n\njupyter_result: > {!jupyter_result}"' > else > inl exit_code, pwsh_replace_html_result = > inl path = path |> sm'.replace "'" "''" > runtime.execution_options fun x => { x with > command = $'$"pwsh -c \\\"$counter = 1; $path = > \'{!path}.html\'; (Get-Content $path -Raw) -replace > \'(id=\\\\\\"cell-id=)[[a-fA-F0-9]]{{8}}\', {{ $_.Groups[[1]].Value + $counter++ > }} | Set-Content $path\\\""' > } > |> runtime.execute_with_options > > trace Debug > fun () => "spiral.run / dib / html cell ids" > fun () => { exit_code pwsh_replace_html_result_length = > pwsh_replace_html_result |> sm'.length : i32 } > > $'$"{!path}.html"' > |> file_system.read_all_text > |> sm'.replace "\r\n" "\n" > |> file_system.write_all_text $'$"{!path}.html"' > > $'$"{!path}.ipynb"' > |> file_system.read_all_text > |> sm'.replace "\r\n" "\n" > |> sm'.replace "\\r\\n" "\\n" > |> file_system.write_all_text $'$"{!path}.ipynb"' > > exit_code, $'$"repl_result: {!repl_result}\n\njupyter_result: > {!jupyter_result}\n\npwsh_replace_html_result: {!pwsh_replace_html_result}"' > > trace Debug > fun () => "spiral.run / dib" > fun () => { exit_code result_length = result |> sm'.length : i32 } > > if exit_code <>. 0 > then failwith $'$"spiral.run / dib / exit_code: {!exit_code} / result: > {!result}"' > ;[[ > "stdio", > result > ]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## typescript > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### process_typescript > > ── spiral ────────────────────────────────────────────────────────────────────── > inl process_typescript { fs_path deps trace_level } = > inl extension = "ts" > > inl code = fs_path |> file_system.read_all_text > > inl hash_hex = (extension, code) |> sm'.format_debug |> crypto.hash_text > > inl workspace_name = "spiral" > > inl workspace_root_external = file_system.get_workspace_root_external () > inl workspace_root = workspace_root_external |> resultm.box |> > resultm.unwrap_or_else id > > inl package_dir = > get_package_dir > { workspace_root name = workspace_name; target = Some TypeScript; > hash = Some hash_hex } > > inl fsproj_path = > persist_code_project { > workspace_root > package_dir > packages = [[ "Fable.Core", "4.3.0" ]] > modules = [[]] > name = workspace_name > code > } > > inl lib_path = workspace_root </> "lib/typescript/fable/fable_modules" > inl lib_dir_prefix = $'$"fable-library-{!extension}"' > inl lib_dir_prefix' = join lib_dir_prefix > > inl versions : _ (string * string) = > lib_path > |> file_system.new_walk_dir > |> file_system.walk_dir_filter fun entry => async.new_future_move_send > fun () => > entry > |> file_system.dir_entry_file_type > |> async.await_send > |> resultm.map_error' sm'.format' > |> resultm.unbox > |> function > | Ok file_type when file_type |> file_system.file_type_is_dir |> > not => file_system.Ignore > | _ => > inl path = > entry > |> file_system.dir_entry_path > |> file_system.path_buf_display > |> sm'.format' > |> sm'.from_std_string > if path |> file_system.get_directory_name |> sm'.starts_with > lib_dir_prefix |> not > then file_system.IgnoreDir > else > match path |> file_system.directory_get_parent |> > optionm'.unbox with > | Some parent when parent |> sm'.contains lib_dir_prefix > |> not => > file_system.Continue > | _ => file_system.IgnoreDir > |> async.stream_filter_map_futures fun (entry : _ _ > file_system.async_walkdir_error) => > inl entry = entry |> resultm.map_error' sm'.format' |> resultm.unbox > match entry with > | Ok entry => > inl path = > entry > |> file_system.dir_entry_path > |> file_system.path_buf_display > |> sm'.format' > |> sm'.from_std_string > inl version = > $'$"{!lib_dir_prefix'}\\.(?<a>[[-\\d\\w.]]+)$"' > |> sm'.new_regex > |> resultm.unwrap' > |> sm'.regex_captures path > |> am'.from_vec > |> fun x => x : _ int _ > |> am'.try_item 0 > |> optionm.map (mapm.get "a" >> optionm'.unbox) > |> optionm'.flatten > version > |> optionm.map fun version => > path, version > | Error error => > trace Critical > fun () => "spiral.process_typescript / stream_filter_map" > fun () => { error } > None > |> optionm'.box > |> async.stream_collect_futures > |> async.await > |> async.into_par_iter > |> async.par_map id > |> async.par_collect > > inl version = > versions > |> am'.from_vec > |> fun x => x : _ i32 _ > |> am'.try_item 0 > > trace Debug > fun () => "spiral.process_typescript" > fun () => { version } > > > let link_lib () = > match version with > | Some (_path, version) => > inl lib_link_target_path = lib_path </> > $'$"fable-library-{!extension}.{!version}"' > inl lib_link_path = package_dir </> > $'$"fable_modules/fable-library-{!extension}.{!version}"' > lib_link_path |> file_system.link_directory lib_link_target_path > | None => failwith $'$"spiral.process_typescript / fable library not > found / lib_path: {!lib_path}"' > > link_lib () > > inl exit_code, dotnet_fable_result = > execute_dotnet_fable { workspace_root_external fsproj_path extension > package_dir runtime = None } > > link_lib () > > if exit_code <>. 0 then > trace Critical > fun () => "spiral.process_typescript" > fun () => { exit_code dotnet_fable_result } > { extension = Some extension; code = None; code_path = None; output = > Some dotnet_fable_result } > else > inl deps = > deps > |> am'.vec_map fun dep => > inl dep = dep |> sm'.from_std_string > if dep |> sm'.contains "=" > then dep > else $'$"\\"{!dep}\\":\\"*\\""' > |> am'.from_vec > |> fun x => x : _ i32 _ > |> seq.of_array' > |> sm'.concat ",\n" > > inl package_json_content = > $'$"{{"' > +. $'$" \\\"name\\\": \\\"spiral_{!hash_hex}\\\","' > +. $'$" \\\"dependencies\\\": {{"' > +. deps > +. $'$" }},"' > +. $'$" \\\"devDependencies\\\": {{"' > +. $'$" }},"' > +. $'$"}}"' > > inl workspace_package_json_content = > "" > > inl package_json_path = package_dir </> "package.json" > > inl workspace_dir = package_dir </> "../.." > inl workspace_package_json_path = workspace_dir </> "package.json" > > package_json_content |> file_system.write_all_text_exists > package_json_path > > workspace_package_json_content |> file_system.write_all_text_exists > workspace_package_json_path > > inl new_code_path = package_dir </> $'$"{!workspace_name}.{!extension}"' > trace Debug > fun () => "spiral.process_typescript" > fun () => { new_code_path } > inl new_code = new_code_path |> file_system.read_all_text > > inl main_code_header = > "// spiral.process_typescript" > inl main_code = "// spiral.process_typescript" > > inl cached = new_code |> sm'.contains main_code_header > > inl new_code = > if cached > then new_code > else > new_code > |> sm'.replace > $'$"\\\"./fable_modules/fable-library-ts.{!version}/"' > > $'$"\\\"{!workspace_root}/lib/typescript/fable/fable_modules/fable-library-ts.{! > version}/"' > |> sm'.replace_regex > "\\s\\sdefaultOf\\(\\);" > " defaultOf::<()>();" > > if not cached then > $'$"{!new_code}\\n\\n{!main_code}\\n"' > |> file_system.write_all_text_exists new_code_path > > inl command = $'$"bun --bun run \\\"{!new_code_path}\\\""' > inl environment_variables = > match "~/.bun/bin" |> env.append_path with > | Some path => [[ "PATH", path ]] > | None => [[]] > ++ [[ > "TRACE_LEVEL", "Verbose" > ]] > |> listm'.box > |> listm'.to_array' > inl exit_code, run_result = > runtime.execution_options fun x => { x with > command > environment_variables > working_directory = workspace_root_external |> resultm.box |> > resultm.ok' > } > |> runtime.execute_with_options > > inl external_command = > inl vars = > a environment_variables > |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string > |> fun x => x : _ i32 _ > |> seq.of_array > |> sm'.concat ";" > $'$"pwsh -c \'{!vars}; {!command}\'"' : string > if exit_code = 0 then > inl output = > try > fun () => > run_result > |> sm'.split "\n" > |> fun x => a x : _ i32 _ > |> seq.of_array > |> sm'.concat "\n" > fun ex => > trace Critical > fun () => "spiral.process_typescript / Exception" > fun () => { ex new_code_path external_command > run_result } > None > |> optionm'.box > |> optionm'.unwrap > > { > extension = Some extension > code = Some new_code > code_path = Some new_code_path > output = Some output > } > else > trace Critical > fun () => "spiral.process_typescript / error" > fun () => { exit_code run_result new_code_path external_command > } > { extension = Some extension; code = None; code_path = None; output > = None } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## python > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### process_python > > ── spiral ────────────────────────────────────────────────────────────────────── > inl process_python { fs_path deps trace_level } = > inl extension = "py" > inl is_trace = trace_level = Verbose > inl _trace (fn : () -> string) = > if is_trace > then trace Info (fun () => $'$"spiral.process_python / {!fn ()}"') id > else fn () |> console.write_line > > inl code = fs_path |> file_system.read_all_text > > inl hash_hex = (extension, code) |> sm'.format_debug |> crypto.hash_text > > inl workspace_name = "spiral" > > inl workspace_root_external = file_system.get_workspace_root_external () > inl workspace_root = workspace_root_external |> resultm.box |> > resultm.unwrap_or_else id > > inl package_dir = > get_package_dir { workspace_root name = workspace_name; target = Some > Python; hash = Some hash_hex } > > inl fsproj_path = > persist_code_project { > workspace_root > package_dir > packages = [[ "Fable.Core", "4.3.0" ]] > modules = [[]] > name = workspace_name > code > } > > inl lib_path = workspace_root </> "lib/python/fable/fable_modules" > > inl lib_link_target_path = lib_path </> $'$"fable_library"' > inl lib_link_path = package_dir </> $'$"fable_modules/fable_library"' > > lib_link_path |> file_system.link_directory lib_link_target_path > > inl exit_code, dotnet_fable_result = > execute_dotnet_fable { workspace_root_external fsproj_path extension > package_dir runtime = None } > > if exit_code <>. 0 then > trace Critical > fun () => "spiral.process_python" > fun () => { exit_code dotnet_fable_result } > { extension = Some extension; code = None; code_path = None; output = > Some dotnet_fable_result } > else > inl deps = > deps > |> am'.vec_map fun dep => > inl dep = dep |> sm'.from_std_string > if dep |> sm'.contains "=" > then dep > else $'$"\\"{!dep}\\":\\"*\\""' > |> am'.from_vec > |> fun x => x : _ i32 _ > |> seq.of_array' > |> sm'.concat ",\n" > > inl package_json_content = > $'$"{{"' > +. $'$" \\\"name\\\": \\\"spiral_{!hash_hex}\\\","' > +. $'$" \\\"dependencies\\\": {{"' > +. deps > +. $'$" }},"' > +. $'$" \\\"devDependencies\\\": {{"' > +. $'$" }},"' > +. $'$"}}"' > > inl workspace_package_json_content = > "" > > inl package_json_path = package_dir </> "package.json" > > inl workspace_dir = package_dir </> "../.." > inl workspace_package_json_path = workspace_dir </> "package.json" > > package_json_content |> file_system.write_all_text_exists > package_json_path > > workspace_package_json_content |> file_system.write_all_text_exists > workspace_package_json_path > > inl new_code_path = package_dir </> $'$"{!workspace_name}.{!extension}"' > trace Debug > fun () => "spiral.process_python" > fun () => { new_code_path } > inl new_code = new_code_path |> file_system.read_all_text > > inl main_code_header = > "# spiral.process_python" > inl main_code = "# spiral.process_python" > > inl cached = new_code |> sm'.contains main_code_header > > inl new_code = > if cached > then new_code > else > new_code > |> sm'.replace > ("),)" +. !\($'"\\\";\\\".into()"')) > "));" > |> sm'.replace_regex > "\\s\\sdefaultOf\\(\\);" > " defaultOf::<()>();" > > if not cached > then > $'$"{!new_code}\\n\\n{!main_code}\\n"' > |> file_system.write_all_text_exists new_code_path > > inl command = $'$"python \\\"{!new_code_path}\\\""' > inl environment_variables = > ;[[ > "TRACE_LEVEL", "Verbose" > ]] > inl exit_code, run_result = > runtime.execution_options fun x => { x with > command > environment_variables > working_directory = workspace_root_external |> resultm.box |> > resultm.ok' > } > |> runtime.execute_with_options > > inl external_command = > inl vars = > a environment_variables > |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string > |> fun x => x : _ i32 _ > |> seq.of_array > |> sm'.concat ";" > $'$"pwsh -c \'{!vars}; {!command}\'"' : string > if exit_code = 0 then > inl output = > try > fun () => > run_result > |> sm'.split "\n" > |> fun x => a x : _ i32 _ > |> seq.of_array > |> sm'.concat "\n" > fun ex => > trace Critical > fun () => "spiral.process_python / Exception" > fun () => { ex new_code_path external_command > run_result } > None > |> optionm'.box > |> optionm'.unwrap > > { > extension = Some extension > code = Some new_code > code_path = Some new_code_path > output = Some output > } > else > trace Critical > fun () => "spiral.process_python / error" > fun () => { exit_code run_result new_code_path external_command > } > { extension = Some extension; code = None; code_path = None; output > = None } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## gleam > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### process_gleam > > ── spiral ────────────────────────────────────────────────────────────────────── > inl process_gleam { gleam_path target deps } = > inl extension = "gleam" > > inl new_code_path = gleam_path > inl new_code = new_code_path |> file_system.read_all_text > > inl hash_hex = { extension new_code } |> sm'.format |> crypto.hash_text > > inl workspace_root_external = file_system.get_workspace_root_external () > inl workspace_root = > workspace_root_external |> resultm.box |> resultm.unwrap_or_else id |> > file_system.standardize_path > > inl src_dir = > new_code_path > |> file_system.directory_get_parent > |> optionm'.default_value' "" > |> file_system.standardize_path > > inl package_dir = src_dir </> ".." |> file_system.standardize_path > > inl manifest_path = package_dir </> "gleam.toml" > > inl deps = > ;[[ > "gleam_stdlib=\"0.57.0\"" > "gleam_time=\">=1.0.0 and <2.0.0\"" > "gleam_erlang=\">=0.34.0 and <1.0.0\"" > "envoy=\">=1.0.0 and <2.0.0\"" > "gary=\">=1.1.0 and <2.0.0\"" > ]] > |> am'.to_vec > |> am'.vec_map sm'.to_std_string > |> am'.vec_extend deps > |> am'.vec_map fun dep => > inl dep = dep |> sm'.from_std_string > if dep |> sm'.contains "=" > then dep > elif dep |> sm'.ends_with "]]" > then dep |> sm'.replace "[[" $'$"={{version=\'*\',features=[["' |> > fun x => $'$"{!x}}}"' > else $'$"{!dep}=\'*\'"' > |> am'.from_vec > |> fun x => x : _ i32 _ > |> seq.of_array' > |> sm'.concat "\n" > > inl target' = target |> reflection.union_to_string |> sm'.to_lower > > inl manifest = > inl main = > if new_code_path |> sm'.contains "_real" > then "main_real" > else "main" > $'$"name = \\\"{!main}\\\""' > ++\# $'$"target = \\\"{!target'}\\\""' > ++\# $'$""' > ++\# $'$"[[dependencies]]"' > ++\# $'$"{!deps}"' > > manifest |> file_system.write_all_text_exists manifest_path > > inl exit_code, run_result = > runtime.execution_options fun x => { x with > command = $'$"gleam check"' > working_directory = package_dir |> optionm'.some' > } > |> runtime.execute_with_options > > if exit_code <>. 0 then > trace Critical > fun () => "spiral.process_gleam / check error" > fun () => { exit_code run_result new_code_path } > { extension = Some extension; code = None; code_path = None; output = > None } > else > inl command = > if target = Erlang > then $'$"gleam run --no-print-progress \\\"{!new_code_path}\\\""' : > string > else $'$"gleam build --no-print-progress"' > inl environment_variables = > ;[[ > "TRACE_LEVEL", "" > "GLEAM_LOG", "" > "GLEAM_LOG_NOCOLOUR", "" > ]] > inl exit_code, run_result = > runtime.execution_options fun x => { x with > command > environment_variables > working_directory = package_dir |> optionm'.some' > } > |> runtime.execute_with_options > > inl external_command = > inl vars = > a environment_variables > |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string > |> fun x => x : _ i32 _ > |> seq.of_array > |> sm'.concat ";" > $'$"pwsh -c \'{!vars}; {!command}\'"' : string > if exit_code <>. 0 then > trace Critical > fun () => "spiral.process_gleam / error" > fun () => { exit_code run_result new_code_path external_command > } > { extension = Some extension; code = None; code_path = None; output > = None } > else > inl run_result = > if target = Erlang > then run_result > else > inl js_path = > $'$"{!package_dir}/build/dev/javascript/main/main.mjs"' > inl js_text = js_path |> file_system.read_all_text > inl js_text = js_text |> sm'.replace $'$"#app_"' > $'$"#app_{!hash_hex}"' > if js_text |> sm'.ends_with "main()" |> not then > $'$"{!js_text}\nmain()"' > |> file_system.write_all_text_exists js_path > > inl exit_code, run_result = > runtime.execution_options fun x => { x with > command = > $'$"bunx --bun esbuild --bundle --minify > --loader:.wasm=file --outdir={!src_dir} {!js_path}"' > environment_variables = > match "~/.bun/bin" |> env.append_path with > | Some path => ;[[ "PATH", path ]] > | None => ;[[]] > working_directory = package_dir |> optionm'.some' > } > |> runtime.execute_with_options > > if exit_code <>. 0 then > trace Critical > fun () => "spiral.process_gleam / esbuild error" > fun () => { exit_code run_result new_code_path } > "" > else > inl html = > $'$"<\!DOCTYPE html>"' > ++\# $'$"<html lang=\\\"en\\\">"' > ++\# $'$" <head>"' > ++\# $'$" <meta charset=\\\"UTF-8\\\" />"' > ++\# $'$" <meta name=\\\"viewport\\\" > content=\\\"width=device-width, initial-scale=1.0\\\" />"' > ++\# $'$" <link"' > ++\# $'$" data-trunk"' > ++\# $'$" rel=\\\"inline\\\""' > ++\# $'$" > href=\\\"../build/packages/lustre_ui/priv/static/lustre_ui.css\\\""' > ++\# $'$" />"' > ++\# $'$" <link"' > ++\# $'$" data-trunk"' > ++\# $'$" rel=\\\"inline\\\""' > ++\# $'$" type=\\\"module\\\""' > ++\# $'$" href=\\\"main.js\\\""' > ++\# $'$" />"' > ++\# $'$" </head>"' > ++\# $'$" <body>"' > ++\# $'$" <div > id=\\\"app_{!hash_hex}\\\"></div>"' > ++\# $'$" </body>"' > ++\# $'$"</html>"' > > inl html_path = $'$"{!src_dir}/index.html"' > html |> file_system.write_all_text_exists html_path > > "" |> file_system.write_all_text_exists > $'$"{!src_dir}/spiral_{!hash_hex}.rs"' > > inl manifest = > $'$"[[package]]"' > ++\# $'$"name = \\\"spiral_{!hash_hex}\\\""' > ++\# $'$""' > ++\# $'$"[[workspace]]"' > ++\# $'$""' > ++\# $'$"[[lib]]"' > ++\# $'$"crate-type = [[\\\"cdylib\\\", > \\\"rlib\\\"]]"' > ++\# $'$"path = \\\"spiral_{!hash_hex}.rs\\\""' > ++\# $'$""' > ++\# $'$"[[dependencies]]"' > > manifest |> file_system.write_all_text_exists > $'$"{!src_dir}/Cargo.toml"' > > inl exit_code, run_result = > runtime.execution_options fun x => { x with > command = $'$"trunk build --release --minify > --dist={!src_dir} --public-url=./ --no-sri"' > environment_variables = > ;[[ > "TRUNK_TOOLS_WASM_BINDGEN", "0.2.93" > ]] > working_directory = src_dir |> optionm'.some' > } > |> runtime.execute_with_options > > if exit_code <>. 0 then > trace Critical > fun () => "spiral.process_gleam / trunk error" > fun () => { exit_code run_result new_code_path } > "" > else > html_path |> file_system.read_all_text > > inl run_result' = run_result |> sm'.to_std_string > > inl output = > try > fun () => > run_result > |> sm'.split "\n" > |> fun x => a x : _ i32 _ > |> seq.of_array > |> sm'.concat "\n" > fun ex => > trace Critical > fun () => "spiral.process_gleam / Exception" > fun () => { ex run_result' new_code_path > external_command } > None > |> optionm'.box > |> optionm'.unwrap > > { > extension = Some extension > code = Some new_code > code_path = Some new_code_path > output = Some output > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## cuda > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### process_cuda > > ── spiral ────────────────────────────────────────────────────────────────────── > inl process_cuda { py_path env deps } = > inl extension = "py" > > inl new_code_path = py_path > inl new_code = new_code_path |> file_system.read_all_text > > inl workspace_root_external = file_system.get_workspace_root_external () > inl workspace_root = workspace_root_external |> resultm.box |> > resultm.unwrap_or_else id > > inl package_dir = new_code_path |> file_system.directory_get_parent |> > optionm'.default_value' "" > > inl manifest_path = > match env with > | Pip => package_dir </> "requirements.txt" > | Poetry => package_dir </> "pyproject.toml" > > inl deps = > deps > |> am'.vec_map fun dep => > inl dep = dep |> sm'.from_std_string > if dep |> sm'.contains "=" > then dep > elif dep |> sm'.ends_with "]]" > then dep |> sm'.replace "[[" $'$"={{version=\'*\',features=[["' |> > fun x => $'$"{!x}}}"' > else $'$"{!dep}=\'*\'"' > |> am'.from_vec > |> fun x => x : _ i32 _ > |> seq.of_array' > |> sm'.concat "\n" > > inl exit_code, run_result = > if deps = "" > then 0, "" > else > inl manifest = > match env with > | Pip => > deps > | Poetry => > $'$"[[tool.poetry]]"' > ++\# $'$"name = \\\"test\\\""' > ++\# $'$"version = \\\"0.0.1\\\""' > ++\# $'$"description = \\\"\\\""' > ++\# $'$"authors = [[]]"' > ++\# $'$""' > ++\# $'$"[[tool.poetry.dependencies]]"' > ++\# $'$"python=\\\"~3.12\\\""' > ++\# $'$"{!deps}"' > ++\# $'$""' > ++\# $'$"[[build-system]]"' > ++\# $'$"requires = [[\\\"poetry-core\\\"]]"' > ++\# $'$"build-backend = \\\"poetry.core.masonry.api\\\""' > > manifest |> file_system.write_all_text_exists manifest_path > > runtime.execution_options fun x => { x with > command = > match env with > | Pip => $'$"pip install -r requirements.txt"' > | Poetry => $'$"poetry install"' > working_directory = package_dir |> optionm'.some' > } > |> runtime.execute_with_options > > if exit_code <>. 0 then > trace Critical > fun () => "spiral.process_cuda / env install error" > fun () => { env exit_code run_result new_code_path } > { extension = Some extension; code = None; code_path = None; output = > None } > else > inl command = > match env with > | Pip => $'$"python \\\"{!new_code_path}\\\""' > | Poetry => $'$"poetry run python \\\"{!new_code_path}\\\""' > inl environment_variables = > ;[[ > "TRACE_LEVEL", "Verbose" > ]] > inl exit_code, run_result = > runtime.execution_options fun x => { x with > command > environment_variables > working_directory = package_dir |> optionm'.some' > } > |> runtime.execute_with_options > > inl external_command = > inl vars = > a environment_variables > |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string > |> fun x => x : _ i32 _ > |> seq.of_array > |> sm'.concat ";" > $'$"pwsh -c \'{!vars}; {!command}\'"' : string > if exit_code = 0 > || (run_result |> sm'.contains > "cupy_backends.cuda.api.runtime.CUDARuntimeError: cudaErrorInsufficientDriver") > then > inl output = > try > fun () => > run_result > |> sm'.split "\n" > |> fun x => a x : _ i32 _ > |> seq.of_array > |> sm'.concat "\n" > fun ex => > trace Critical > fun () => "spiral.process_cuda / Exception" > fun () => { ex run_result new_code_path > external_command } > None > |> optionm'.box > |> optionm'.unwrap > > { > extension = Some extension > code = Some new_code > code_path = Some new_code_path > output = Some output > } > else > trace Critical > fun () => "spiral.process_cuda / error" > fun () => { exit_code run_result new_code_path external_command > } > { extension = Some extension; code = None; code_path = None; output > = None } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## fsharp > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### process_fsharp > > ── spiral ────────────────────────────────────────────────────────────────────── > inl process_fsharp { spi_path } = > inl extension = "fsx" > > inl new_code_path = spi_path > inl new_code = new_code_path |> file_system.read_all_text > > inl workspace_root_external = file_system.get_workspace_root_external () > inl workspace_root = workspace_root_external |> resultm.box |> > resultm.unwrap_or_else id > > inl supervisor_path = workspace_root </> > $"apps/spiral/dist/Supervisor!(platform.get_executable_suffix ())" > inl code_dir = new_code_path |> file_system.directory_get_parent |> > optionm'.default_value' "" > inl file_name = new_code_path |> file_system.get_file_name_without_extension > inl output_path = code_dir </> $'$"{!file_name}.{!extension}"' > inl command = $'$"{!supervisor_path} --build-file \\\"{!new_code_path}\\\" > \\\"{!output_path}\\\""' > inl environment_variables = > ;[[ > "TRACE_LEVEL", "Verbose" > ]] > inl exit_code, run_result = > runtime.execution_options fun x => { x with > command > environment_variables > working_directory = workspace_root_external |> resultm.box |> > resultm.ok' > } > |> runtime.execute_with_options > > inl external_command = > inl vars = > a environment_variables > |> am.map fun k, v => $'$"$env:{!k}=\'\'{!v}\'\'"' : string > |> fun x => x : _ i32 _ > |> seq.of_array > |> sm'.concat ";" > $'$"pwsh -c \'{!vars}; {!command}\'"' : string > if exit_code = 0 then > inl output = > try > fun () => > run_result > |> sm'.split "\n" > |> fun x => a x : _ i32 _ > |> seq.of_array > |> sm'.concat "\n" > fun ex => > trace Critical > fun () => "spiral.process_fsharp / Exception" > fun () => { ex run_result new_code_path external_command > } > None > |> optionm'.box > |> optionm'.unwrap > > { > extension = Some extension > code = Some new_code > code_path = Some new_code_path > output = Some output > } > else > trace Critical > fun () => "spiral.process_fsharp / error" > fun () => { exit_code run_result new_code_path external_command } > { extension = Some extension; code = None; code_path = None; output = > None } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## run > > ── spiral ────────────────────────────────────────────────────────────────────── > let rec run trace_level (matches : runtime.arg_matches) : async.future_pin > (resultm.result' string string) = > fun () => > match matches |> runtime.matches_subcommand |> optionm'.unbox with > | Some (subcommand, arg_matches) > when (subcommand |> sm'.from_std_string) = (get_args () .gleam > |> fst) => > > inl gleam_path = > arg_matches > |> runtime.matches_get_one ((get_args () .gleam |> > snd).gleam_path |> fst) > |> optionm'.unbox > |> optionm.value > |> sm'.from_std_string > > inl target = > arg_matches > |> runtime.matches_get_one ((get_args () .gleam |> snd).target > |> fst) > |> optionm'.unbox > |> optionm.map ( > sm'.from_std_string > >> reflection.union_try_pick > ) > |> optionm'.flatten > |> optionm'.default_value Erlang > > inl deps : am'.vec sm'.std_string = > arg_matches > |> runtime.matches_get_many ((get_args () .gleam |> snd).deps |> > fst) > |> optionm'.unbox > |> optionm'.default_value (;[[]] |> am'.to_vec) > > inl command_result = > process_gleam { gleam_path target deps } > |> fun { extension code output } => > ;[[ > "extension", extension |> optionm'.default_value "" > "code", code |> optionm'.default_value "" > "output", output |> optionm'.default_value "" > ]] > > ;[[ > "command_result", > command_result > |> am'.to_vec > |> am'.vec_map' fun k, v => > new_pair (sm'.to_std_string k) (sm'.to_std_string v) > |> mapm.b_tree_map_from_vec_pairs > |> sm'.serialize > |> resultm.unwrap' > |> sm'.from_std_string > ]] > > | Some (subcommand, arg_matches) > when (subcommand |> sm'.from_std_string) = (get_args () .cuda |> > fst) => > > inl py_path = > arg_matches > |> runtime.matches_get_one ((get_args () .cuda |> snd).py_path > |> fst) > |> optionm'.unbox > |> optionm.value > |> sm'.from_std_string > > inl env = > arg_matches > |> runtime.matches_get_one ((get_args () .cuda |> snd).env |> > fst) > |> optionm'.unbox > |> optionm.map ( > sm'.from_std_string > >> reflection.union_try_pick > ) > |> optionm'.flatten > |> optionm'.default_value Pip > > inl deps : am'.vec sm'.std_string = > arg_matches > |> runtime.matches_get_many ((get_args () .cuda |> snd).deps |> > fst) > |> optionm'.unbox > |> optionm'.default_value (;[[]] |> am'.to_vec) > > inl command_result = > process_cuda { py_path env deps } > |> fun { extension code output } => > ;[[ > "extension", extension |> optionm'.default_value "" > "code", code |> optionm'.default_value "" > "output", output |> optionm'.default_value "" > ]] > > ;[[ > "command_result", > command_result > |> am'.to_vec > |> am'.vec_map' fun k, v => > new_pair (sm'.to_std_string k) (sm'.to_std_string v) > |> mapm.b_tree_map_from_vec_pairs > |> sm'.serialize > |> resultm.unwrap' > |> sm'.from_std_string > ]] > > | Some (subcommand, arg_matches) > when (subcommand |> sm'.from_std_string) = (get_args () .fable > |> fst) => > > inl fs_path = > arg_matches > |> runtime.matches_get_one ((get_args () .fable |> snd).fs_path > |> fst) > |> optionm'.unbox > |> optionm.value > |> sm'.from_std_string > > inl command = > arg_matches > |> runtime.matches_get_one ((get_args () .fable |> snd).command > |> fst) > |> optionm'.unbox > |> optionm.map sm'.from_std_string > > inl command_result = > match command with > | Some command => > get_command () > |> runtime.command_get_matches_from ( > $'$"_ {!command} --fs-path \\\"{!fs_path}\\\""' |> > runtime.split_args |> resultm.get > ) > |> run trace_level > |> async.await > |> resultm.unwrap' > | None => "{}" > > ;[[ > "command_result", > command_result > ]] > > | Some (subcommand, arg_matches) > when (subcommand |> sm'.from_std_string) = (get_args () .dib |> fst) > => > > inl path = > arg_matches > |> runtime.matches_get_one ((get_args () .dib |> snd).path |> > fst) > |> optionm'.map'' ( > sm'.from_std_string > >> file_system.absolute_path > ) > |> optionm'.unwrap > > inl retries = > arg_matches > |> runtime.matches_get_one ((get_args () .dib |> snd).retries |> > fst) > |> optionm'.default_value' 1u8 > > inl working_directory = > arg_matches > |> runtime.matches_get_one ((get_args () .dib |> > snd).working_directory |> fst) > |> optionm'.unbox > |> optionm.map sm'.from_std_string > > process_dib { path retries working_directory } > > | matches => > match matches with > | Some (subcommand, arg_matches) > when (subcommand |> sm'.from_std_string) = (get_args () > .rust |> fst) => > > inl fs_path = > arg_matches > |> runtime.matches_get_one ((get_args () .rust |> > snd).fs_path |> fst) > |> optionm'.unbox > |> optionm.value > |> sm'.from_std_string > > inl deps : am'.vec sm'.std_string = > arg_matches > |> runtime.matches_get_many ((get_args () .rust |> snd).deps > |> fst) > |> optionm'.unbox > |> optionm'.default_value (;[[]] |> am'.to_vec) > > inl cleanup = > arg_matches > |> runtime.matches_get_flag ((get_args () .rust |> > snd).cleanup |> fst) > > inl wasm = > arg_matches > |> runtime.matches_get_one ((get_args () .rust |> snd).wasm > |> fst) > |> optionm'.unbox > |> optionm.map sm'.from_std_string > > inl contract = > arg_matches > |> runtime.matches_get_one ((get_args () .rust |> > snd).contract |> fst) > |> optionm'.unbox > |> optionm.map sm'.from_std_string > > inl runtime = > match wasm, contract with > | Some wasm, _ => Wasm wasm |> Some > | _, Some contract => Contract contract |> Some > | _ => None > > process_rust { fs_path deps trace_level runtime cleanup } > > | Some (subcommand, arg_matches) > when (subcommand |> sm'.from_std_string) = (get_args () > .typescript |> fst) => > > inl fs_path = > arg_matches > |> runtime.matches_get_one ((get_args () .typescript |> > snd).fs_path |> fst) > |> optionm'.unbox > |> optionm.value > |> sm'.from_std_string > > inl deps : am'.vec sm'.std_string = > arg_matches > |> runtime.matches_get_many ((get_args () .typescript |> > snd).deps |> fst) > |> optionm'.unbox > |> optionm'.default_value (;[[]] |> am'.to_vec) > > process_typescript { fs_path deps trace_level } > > | Some (subcommand, arg_matches) > when (subcommand |> sm'.from_std_string) = (get_args () > .python |> fst) => > inl fs_path = > arg_matches > |> runtime.matches_get_one ((get_args () .python |> > snd).fs_path |> fst) > |> optionm'.unbox > |> optionm.value > |> sm'.from_std_string > > inl deps : am'.vec sm'.std_string = > arg_matches > |> runtime.matches_get_many ((get_args () .python |> > snd).deps |> fst) > |> optionm'.unbox > |> optionm'.default_value (;[[]] |> am'.to_vec) > > process_python { fs_path deps trace_level } > > | Some (subcommand, arg_matches) => > trace Debug > fun () => "spiral.run / invalid subcommand" > fun () => { subcommand arg_matches } > > { extension = None; code = None; code_path = None; output = None > } > | _ => > { extension = None; code = None; code_path = None; output = None > } > |> fun { extension code code_path output } => > ;[[ > "extension", extension |> optionm'.default_value "" > "code", code |> optionm'.default_value "" > "code_path", code_path |> optionm'.default_value "" > "output", output |> optionm'.default_value "" > ]] > |> am'.to_vec > |> am'.vec_map' fun k, v => > new_pair (sm'.to_std_string k) (sm'.to_std_string v) > |> mapm.b_tree_map_from_vec_pairs > |> sm'.serialize > |> resultm.map_error' (sm'.format' >> sm'.from_std_string) > |> resultm.map' sm'.from_std_string > |> async.new_future_move > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand > rayon regex serde_json sha2 > > inl file_name = "main.fs" > inl code = "let method0 () =\n 3 - 6 |> System.Console.WriteLine\nmethod0 > ()\n" > > inl temp_dir, disposable = > (file_name, code) > |> sm'.format_debug > |> crypto.hash_text > |> file_system.create_temp_dir' > disposable |> use |> ignore > inl fs_path = temp_dir </> file_name > > code |> file_system.write_all_text fs_path > > get_command () > |> runtime.command_get_matches_from ($'$"_ fable -f \\\"{!fs_path}\\\" -c > \\\"rust -d regex=\'*\'\\\""' |> runtime.split_args |> resultm.get) > |> run Verbose > |> async.block_on_futures > |> resultm.unwrap' > |> sm'.deserialize > |> resultm.unwrap' > |> mapm.get ("command_result" |> sm'.to_std_string) > |> optionm'.unwrap > |> sm'.from_std_string > |> sm'.deserialize > |> resultm.unwrap' > |> fun result => > result > |> mapm.get ("extension" |> sm'.to_std_string) > |> optionm'.unwrap > |> sm'.from_std_string > |> _assert_eq "rs" > result > |> mapm.get ("output" |> sm'.to_std_string) > |> optionm'.unwrap > |> sm'.from_std_string > |> _assert_eq "-3" > > ── [ 1.22m - return value ] ──────────────────────────────────────────────────── > │ 00:00:00 v #1 file_system.create_dir / { dir = > C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_5cb0702d0aa6ef7cd810 > 3bacdedb32dab5770432a89bdd87c35fc64b4fe8a28f\84b99b0b-d6d4-d4b8-7f79-3c480ce421d > a } > │ 00:00:00 v #2 file_system.create_dir / { dir = > c:/home/git\polyglot\target/spiral\spiral\packages\Rust\399aa1f3f3139f81268d9546 > 70e64e9b347bbd6e901ea5469dbdbbb859fe2e29 } > │ 00:00:00 d #3 runtime.execute_with_options / { > file_name = dotnet; arguments = ["fable", > "c:/home/git/polyglot/target/spiral/spiral/packages/Rust/399aa1f3f3139f81268d954 > 670e64e9b347bbd6e901ea5469dbdbbb859fe2e29/spiral.fsproj", "--optimize", > "--lang", "rs", "--extension", ".rs", "--outDir", > "c:/home/git\\polyglot\\target/spiral\\spiral\\packages\\Rust\\399aa1f3f3139f812 > 68d954670e64e9b347bbd6e901ea5469dbdbbb859fe2e29", "--define", "_WINDOWS"]; > options = { command = dotnet fable > "c:/home/git/polyglot/target/spiral/spiral/packages/Rust/399aa1f3f3139f81268d954 > 670e64e9b347bbd6e901ea5469dbdbbb859fe2e29/spiral.fsproj" --optimize --lang rs > --extension .rs --outDir > "c:/home/git\polyglot\target/spiral\spiral\packages\Rust\399aa1f3f3139f81268d954 > 670e64e9b347bbd6e901ea5469dbdbbb859fe2e29" --define _WINDOWS; cancellation_token > = None; environment_variables = Array(MutCell([])); on_line = None; stdin = > None; trace = true; working_directory = Some( > │ "c:/home/git\polyglot", > │ ) } } > │ 00:00:00 v #4 > Fable 5.0.0-alpha.9: F# to Rust > compiler (status: alpha) > │ 00:00:00 v #5 ...00:00:01 v #225 > spiral.process_rust / cleanup / { new_code_path = > c:/home/git\polyglot\target/spiral\spiral\packages\Rust\399aa1f3f3139f81268d9546 > 70e64e9b347bbd6e901ea5469dbdbbb859fe2e29\spiral.rs; cleanup = > UH5_1("c:/home/git\polyglot\target/spiral\spiral\packages\Rust\399aa1f3f3139f812 > 68d954670e64e9b347bbd6e901ea5469dbdbbb859fe2e29\../../..\target/debug/spiral_399 > aa1f3f3139f81268d954670e64e9b347bbd6e901ea5469dbdbbb859fe2e29.d", true, > UH5_1("c:/home/git\polyglot\target/spiral\spiral\packages\Rust\399aa1f3f3139f812 > 68d954670e64e9b347bbd6e901ea5469dbdbbb859fe2e29\../../..\target/debug/spiral_399 > aa1f3f3139f81268d954670e64e9b347bbd6e901ea5469dbdbbb859fe2e29.exe", true, > UH5_1("c:/home/git\polyglot\target/spiral\spiral\packages\Rust\399aa1f3f3139f812 > 68d954670e64e9b347bbd6e901ea5469dbdbbb859fe2e29\../../..\target/debug/spiral_399 > aa1f3f3139f81268d954670e64e9b347bbd6e901ea5469dbdbbb859fe2e29.pdb", true, > UH5_1("c:/home/git\polyglot\target/spiral\spiral\packages\Rust\399aa1f3f3139f812 > 68d954670e64e9b347bbd6e901ea5469dbdbbb859fe2e29\../../..\target/debug/spiral_399 > aa1f3f3139f81268d954670e64e9b347bbd6e901ea5469dbdbbb859fe2e29.wasm", false, > UH5_1("c:/home/git\polyglot\target/spiral\spiral\packages\Rust\399aa1f3f3139f812 > 68d954670e64e9b347bbd6e901ea5469dbdbbb859fe2e29\../../..\target/debug/spiral_399 > aa1f3f3139f81268d954670e64e9b347bbd6e901ea5469dbdbbb859fe2e29", false, > UH5_0))))) } > │ { name = __assert_eq; actual = rs; expected = rs } > │ { name = __assert_eq; actual = -3; expected = -3 } > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand > rayon regex serde_json sha2 > > inl file_name = "main.fs" > inl code = "3 - 6 |> System.Console.WriteLine\n" > > inl temp_dir, disposable = > (file_name, code) > |> sm'.format_debug > |> crypto.hash_text > |> file_system.create_temp_dir' > disposable |> use |> ignore > inl fs_path = temp_dir </> file_name > > code |> file_system.write_all_text fs_path > > get_command () > |> runtime.command_get_matches_from ($'$"_ fable -f \\\"{!fs_path}\\\" -c > \\\"typescript\\\""' |> runtime.split_args |> resultm.get) > |> run Verbose > |> async.block_on_futures > |> resultm.unwrap' > |> sm'.deserialize > |> resultm.unwrap' > |> mapm.get ("command_result" |> sm'.to_std_string) > |> optionm'.unwrap > |> sm'.from_std_string > |> sm'.deserialize > |> resultm.unwrap' > |> fun result => > result > |> mapm.get ("extension" |> sm'.to_std_string) > |> optionm'.unwrap > |> sm'.from_std_string > |> _assert_eq "ts" > result > |> mapm.get ("output" |> sm'.to_std_string) > |> optionm'.unwrap > |> sm'.from_std_string > |> _assert_eq "-3" > > ── [ 1.14m - return value ] ──────────────────────────────────────────────────── > │ 00:00:00 v #1 file_system.create_dir / { dir = > C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_dc1b47ed389203f1f098 > 52570c9d080a4b422736982c8e1ac15a5b1b64c4e277\c6422374-71e4-07d4-0ba4-c3084b24fbb > a } > │ 00:00:00 v #2 file_system.create_dir / { dir = > c:/home/git\polyglot\target/spiral\spiral\packages\TypeScript\702335b0756baa7db0 > d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa8c4a8 } > │ 00:00:00 d #3 spiral.process_typescript / { version = > US51_0("c:/home/git\polyglot\lib/typescript/fable/fable_modules\fable-library-ts > .5.0.0-alpha.9", "5.0.0-alpha.9") } > │ 00:00:00 d #4 runtime.execute_with_options / { > file_name = dotnet; arguments = ["fable", > "c:/home/git/polyglot/target/spiral/spiral/packages/TypeScript/702335b0756baa7db > 0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa8c4a8/spiral.fsproj", "--optimize", > "--lang", "ts", "--extension", ".ts", "--outDir", > "c:/home/git\\polyglot\\target/spiral\\spiral\\packages\\TypeScript\\702335b0756 > baa7db0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa8c4a8", "--define", "_WINDOWS"]; > options = { command = dotnet fable > "c:/home/git/polyglot/target/spiral/spiral/packages/TypeScript/702335b0756baa7db > 0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa8c4a8/spiral.fsproj" --optimize --lang > ts --extension .ts --outDir > "c:/home/git\polyglot\target/spiral\spiral\packages\TypeScript\702335b0756baa7db > 0d02dbbeaf9fc04cf2c3b7dbb45866c578c5109aaa8c4a8" --define _WINDOWS; > cancellation_token = None; environment_variables = Array(MutCell([])); > o...latex\current\texmfs\install\miktex\bin\x64;C:\Users\i574n\scoop\apps\dotnet > -sdk-preview\current;C:\Users\i574n\scoop\apps\dotnet-sdk\current;C:\Users\i574n > \scoop\apps\gsudo\current;C:\Users\i574n\scoop\apps\python\current;C:\Users\i574 > n\scoop\apps\nircmd\current;C:\Users\i574n\AppData\Local\Microsoft\WindowsApps;C > :\Users\i574n/scoop/buckets/mold/home/windows/path;C:\Users\i574n/scoop/persist/ > rustup/.cargo/bin;C:\Users\i574n/scoop/apps/nvm/current/nodejs/nodejs;C:\Users\i > 574n/scoop/apps/cygwin/current/root/bin;C:\Users\i574n\AppData\Local\Programs\Mi > crosoft VS > Code\bin;C:\Users\i574n\AppData\Local\Microsoft\WindowsApps;C:\Users\i574n\.bun\ > bin;C:\Users\i574n\.dotnet\tools;C:\Users\i574n\scoop\shims;C:\Users\i574n\.fly\ > bin;C:\Program > Files\Wasmtime\bin;C:\Users\i574n\.dotnet\tools;test;C:\Users\i574n\go\bin;C:\Us > ers\i574n\.dotnet\tools;C:\Users\i574n\.dotnet\tools;C:\Users\i574n/.cargo/bin;C > :\Users\i574n/.bun/bin;C:\Users\i574n/.cargo/bin;C:\Users\i574n/.bun/bin;C:\User > s\i574n/.cargo/bin;C:\Users\i574n/.bun/bin;C:\Users\i574n/.cargo/bin;C:\Users\i5 > 74n/.bun/bin;C:\Users\i574n/.cargo/bin;C:\Users\i574n/.bun/bin"), > ("TRACE_LEVEL", "Verbose")])); on_line = None; stdin = None; trace = true; > working_directory = Some( > │ "c:/home/git\polyglot", > │ ) } } > │ 00:00:00 v #19 > -3 > │ 00:00:01 v #20 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 2 } > │ { name = __assert_eq; actual = ts; expected = ts } > │ { name = __assert_eq; actual = -3; expected = -3 } > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand > rayon regex serde_json sha2 > > inl file_name = "main.fs" > inl code = "3 - 6 |> System.Console.WriteLine\n" > > inl temp_dir, disposable = > (file_name, code) > |> sm'.format_debug > |> crypto.hash_text > |> file_system.create_temp_dir' > disposable |> use |> ignore > inl fs_path = temp_dir </> file_name > > code |> file_system.write_all_text fs_path > > get_command () > |> runtime.command_get_matches_from ($'$"_ fable -f \\\"{!fs_path}\\\" -c > \\\"python\\\""' |> runtime.split_args |> resultm.get) > |> run Verbose > |> async.block_on_futures > |> resultm.unwrap' > |> sm'.deserialize > |> resultm.unwrap' > |> mapm.get ("command_result" |> sm'.to_std_string) > |> optionm'.unwrap > |> sm'.from_std_string > |> sm'.deserialize > |> resultm.unwrap' > |> fun result => > result > |> mapm.get ("extension" |> sm'.to_std_string) > |> optionm'.unwrap > |> sm'.from_std_string > |> _assert_eq "py" > result > |> mapm.get ("output" |> sm'.to_std_string) > |> optionm'.unwrap > |> sm'.from_std_string > |> _assert_eq "-3" > > ── [ 1.18m - return value ] ──────────────────────────────────────────────────── > │ 00:00:00 v #1 file_system.create_dir / { dir = > C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_7751d7883a1d2c6292fa > 1ea7cb17797920428fb58e10beb5245be2f02b0d66d0\c6422374-71e4-07d4-0ba4-c3084b24fbb > a } > │ 00:00:00 v #2 file_system.create_dir / { dir = > c:/home/git\polyglot\target/spiral\spiral\packages\Python\cb8f3dd33197bb0bc95f09 > b3f3057a6844a0b70d75477350491883d14d8680ce } > │ 00:00:00 d #3 runtime.execute_with_options / { > file_name = dotnet; arguments = ["fable", > "c:/home/git/polyglot/target/spiral/spiral/packages/Python/cb8f3dd33197bb0bc95f0 > 9b3f3057a6844a0b70d75477350491883d14d8680ce/spiral.fsproj", "--optimize", > "--lang", "py", "--extension", ".py", "--outDir", > "c:/home/git\\polyglot\\target/spiral\\spiral\\packages\\Python\\cb8f3dd33197bb0 > bc95f09b3f3057a6844a0b70d75477350491883d14d8680ce", "--define", "_WINDOWS"]; > options = { command = dotnet fable > "c:/home/git/polyglot/target/spiral/spiral/packages/Python/cb8f3dd33197bb0bc95f0 > 9b3f3057a6844a0b70d75477350491883d14d8680ce/spiral.fsproj" --optimize --lang py > --extension .py --outDir > "c:/home/git\polyglot\target/spiral\spiral\packages\Python\cb8f3dd33197bb0bc95f0 > 9b3f3057a6844a0b70d75477350491883d14d8680ce" --define _WINDOWS; > cancellation_token = None; environment_variables = Array(MutCell([])); on_line = > None; stdin = None; trace = true; working_directory = Some( > │ "c:/home/git\polyglot", > │ ) } } > │ 00:00:00 v #4 > Fable 5.0.0-alpha.9: F# to Python > compiler (status: beta) > │ 00:00:00 iral.fsproj... > │ 00:00:00 v #10 > Retrieving project options from cache, > in case of issues run `dotnet fable clean` or try `--noCache` option. > │ 00:00:00 v #11 > Project and references (1 source > files) parsed in 143ms > │ 00:00:00 v #12 > > │ 00:00:00 v #13 > Skipped compilation because all > generated files are up-to-date! > │ 00:00:00 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 503 } > │ 00:00:00 d #15 spiral.process_python / { new_code_path > = > c:/home/git\polyglot\target/spiral\spiral\packages\Python\cb8f3dd33197bb0bc95f09 > b3f3057a6844a0b70d75477350491883d14d8680ce\spiral.py } > │ 00:00:00 d #16 runtime.execute_with_options / { > file_name = python; arguments = > ["c:/home/git\\polyglot\\target/spiral\\spiral\\packages\\Python\\cb8f3dd33197bb > 0bc95f09b3f3057a6844a0b70d75477350491883d14d8680ce\\spiral.py"]; options = { > command = python > "c:/home/git\polyglot\target/spiral\spiral\packages\Python\cb8f3dd33197bb0bc95f0 > 9b3f3057a6844a0b70d75477350491883d14d8680ce\spiral.py"; cancellation_token = > None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose")])); > on_line = None; stdin = None; trace = true; working_directory = Some( > │ "c:/home/git\polyglot", > │ ) } } > │ 00:00:00 v #17 > -3 > │ 00:00:00 v #18 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 2 } > │ { name = __assert_eq; actual = py; expected = py } > │ { name = __assert_eq; actual = -3; expected = -3 } > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d async-walkdir chrono clap encoding_rs encoding_rs_io futures rand > rayon regex serde_json sha2 > > inl file_name = "test.dib" > inl code = > > "#!meta\n\n{\"kernelInfo\":{\"defaultKernelName\":\"fsharp\",\"items\":[[]]}}\n\ > n#!fsharp\n\n3 - 6\n" > > inl temp_dir, disposable = > (file_name, code) > |> sm'.format_debug > |> crypto.hash_text > |> file_system.create_temp_dir' > disposable |> use |> ignore > inl path = temp_dir </> file_name |> file_system.normalize_path > > code > |> file_system.write_all_text path > > get_command () > |> runtime.command_get_matches_from ($'$"_ dib -p {!path}"' |> > runtime.split_args |> resultm.get) > |> run Verbose > |> async.block_on_futures > |> resultm.unwrap' > |> __assert sm'.contains Silent "<pre>-3" > > $'$"{!path}.html"' > |> file_system.read_all_text > |> __assert sm'.contains Silent "\"cell-id=1\"" > > ── [ 1.23m - return value ] ──────────────────────────────────────────────────── > │ 00:00:00 v #1 file_system.create_dir / { dir = > C:\Users\i574n\AppData\Local\Temp\!create_temp_path_\spiral_07e278ad426b0056e8e7 > fcf2ef9b1e37fce3242f984176df21ec8f8a4b92d0c5\af524e22-8e9a-5d18-99ed-bd86e1b7462 > 3 } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_07e278ad426b0056e8e > 7fcf2ef9b1e37fce3242f984176df21ec8f8a4b92d0c5/af524e22-8e9a-5d18-99ed-bd86e1b746 > 23/test.dib", "--output-path", > "c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_07e278ad426b0056e8e > 7fcf2ef9b1e37fce3242f984176df21ec8f8a4b92d0c5/af524e22-8e9a-5d18-99ed-bd86e1b746 > 23/test.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run > "c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_07e278ad426b0056e8e > 7fcf2ef9b1e37fce3242f984176df21ec8f8a4b92d0c5/af524e22-8e9a-5d18-99ed-bd86e1b746 > 23/test.dib" --output-path > "c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_07e278ad426b0056e8e > 7fcf2ef9b1e37fce3242f984176df21ec8f8a4b92d0c5/af524e22-8e9a-5d18-99ed-bd86e1b746 > 23/test.dib.ipynb"; cancellation_token = None; environment_variables = > Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = > None; stdin = None; trace = false; working_directory = None } } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > 3 - 6 > │ > > │ > ── [ 3.50s - return value ] > ─────────────────────────────────...f524e22-8e9a-5d18-99ed-bd86e1b74623\test.dib > .html > │ 00:00:07 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 1110 } > │ 00:00:07 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 1110 } > │ 00:00:07 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_07e278ad426b0056e8e > 7fcf2ef9b1e37fce3242f984176df21ec8f8a4b92d0c5/af524e22-8e9a-5d18-99ed-bd86e1b746 > 23/test.dib.html'; (Get-Content $path -Raw) -replace > '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | > Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = > 'c:/Users/i574n/AppData/Local/Temp/!create_temp_path_/spiral_07e278ad426b0056e8e > 7fcf2ef9b1e37fce3242f984176df21ec8f8a4b92d0c5/af524e22-8e9a-5d18-99ed-bd86e1b746 > 23/test.dib.html'; (Get-Content $path -Raw) -replace > '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | > Set-Content $path"; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:07 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:00:07 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:00:07 d #16 spiral.run / dib / { exit_code = 0; > result_length = 2636 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## tests > > ── spiral ────────────────────────────────────────────────────────────────────── > inl tests () = > testing.run_tests { > verify_app = get_command >> runtime.command_debug_assert > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## main > > ── spiral ────────────────────────────────────────────────────────────────────── > ///! _ > > inl main (args : array_base string) = > inl trace_state = get_trace_state_or_init None > > trace Debug > fun () => "spiral.main" > fun () => { args } > > inl command = get_command () > inl arg_matches = command |> runtime.command_get_matches > > inl trace_state_level = trace_state.level > > inl result = > arg_matches > |> run *trace_state_level > |> async.block_on_futures > |> resultm.unwrap' > > if *trace_state_level = Info > then result |> console.write_line > > 0i32 > > inl main () = > $'let tests () = !tests ()' : () > $'let main args = !main args' : () 00:08:00 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 114720 } 00:08:00 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/spiral/apps/spiral/spiral.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/spiral/apps/spiral/spiral.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:08:02 v #5 ! [NbConvertApp] Converting notebook c:/home/git/spiral/apps/spiral/spiral.dib.ipynb to html 00:08:02 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:08:02 v #7 ! validate(nb) 00:08:02 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:08:02 v #9 ! return _pygments_highlight( 00:08:04 v #10 ! [NbConvertApp] Writing 697416 bytes to c:\home\git\spiral\apps\spiral\spiral.dib.html 00:08:04 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 852 } 00:08:04 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 852 } 00:08:04 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/spiral/apps/spiral/spiral.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/spiral/apps/spiral/spiral.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:08:05 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:08:05 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:08:05 d #16 spiral.run / dib / { exit_code = 0; result_length = 115631 } 00:00:00 d #1 writeDibCode / output: Spi / path: spiral.dib 00:00:00 d #2 parseDibCode / output: Spi / file: spiral.dib 00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: spiral / hash: / code.Length: 1690956 spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: C:\home\git\polyglot\target\Builder\spiral polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\spiral\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: C:\home\git\spiral\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\spiral / ProjectName: spiral / Language: rs / Runtime: / root: C:\home\git\polyglot Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) Thanks to the contributor! @anchann Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\spiral\spiral.fsproj... Project and references (14 source files) parsed in 2579ms Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Started Fable compilation... Fable compilation finished in 17015ms .\deps\spiral\lib\spiral\common.fsx(2199,0): (2199,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\sm.fsx(561,0): (561,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\crypto.fsx(2426,0): (2426,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\networking.fsx(5050,0): (5050,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\trace.fsx(2232,0): (2232,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\runtime.fsx(7321,0): (7321,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\file_system.fsx(19036,0): (19036,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! spiral/apps/spiral/build.ps1 / path: C:\home\git\polyglot\target\Builder\spiral/target/rs/spiral.rs spiral/apps/spiral/build.ps1 / $projectName: spiral / $env:CI:'' warning: C:\home\git\spiral\workspace\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: C:\home\git\spiral\apps\wasm\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: C:\home\git\spiral\apps\spiral\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: C:\home\git\spiral\lib\spiral\near\wallet\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. Compiling spiral v0.0.1 (C:\home\git\spiral\apps\spiral) Finished `release` profile [optimized] target(s) in 15.99s Running unittests spiral.rs (C:\home\git\spiral\workspace\target\release\deps\spiral-aff934b38de10674.exe) running 1 test test module_1216f6c3::Spiral::verify_app ... ok successes: successes: module_1216f6c3::Spiral::verify_app test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s warning: C:\home\git\spiral\apps\wasm\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: C:\home\git\spiral\lib\spiral\near\wallet\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: C:\home\git\spiral\apps\spiral\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: C:\home\git\spiral\workspace\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. Compiling spiral v0.0.1 (C:\home\git\spiral\apps\spiral) error: failed to remove file `C:\home\git\spiral\workspace\target\release\spiral.exe` Caused by: Access is denied. (os error 5) # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\spiral\apps\spiral / $OnError: Continue / $exitcode: 101 / $Error: '' / $ScriptBlock: 'cargo build --release' polyglot/scripts/core.ps1/GetFullPath / Path: ../../deps/polyglot / Location: C:\home\git\spiral\apps\wasm / ResolvedLocation: C:\home\git\spiral\apps\wasm polyglot/scripts/core.ps1/GetFullPath / FullPath: C:\home\git\spiral\deps\polyglot polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\spiral\deps\polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: C:\home\git\spiral\deps / End: polyglot 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "C:\home\git\spiral\apps\wasm/spiral_wasm.dib", "--working-directory", "C:\home\git\polyglot"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/spiral/apps/wasm/spiral_wasm.dib", "--output-path", "c:/home/git/spiral/apps/wasm/spiral_wasm.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/spiral/apps/wasm/spiral_wasm.dib" --output-path "c:/home/git/spiral/apps/wasm/spiral_wasm.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = Some( "C:\home\git\polyglot", ) } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # spiral_wasm > > ── spiral ────────────────────────────────────────────────────────────────────── > open rust.rust_operators > open rust > open sm'_operators > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## spiral_wasm > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### get_args > > ── spiral ────────────────────────────────────────────────────────────────────── > inl get_args () = > { > exception = "exception", 'e' > trace_level = "trace_level", 't' > wasm = "wasm", 'w' > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### get_command > > ── spiral ────────────────────────────────────────────────────────────────────── > let get_command () = > ##"command" > |> runtime.new_command > |> runtime.command_args_override_self true > |> runtime.command_init_arg (get_args () .exception) ( > runtime.arg_num_args_range ( > runtime.new_value_range > true > (am'.End eval) > (am'.End fun _ => (1i32 |> convert : unativeint)) > ) > >> runtime.arg_require_equals true > >> runtime.arg_default_missing_value "" > ) > |> runtime.command_init_arg (get_args () .trace_level) ( > real runtime.arg_union `trace_level ignore > ) > |> runtime.command_init_arg (get_args () .wasm) ( > runtime.arg_required true > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### run > > ── spiral ────────────────────────────────────────────────────────────────────── > let rec run > (matches : runtime.arg_matches) > : async.future_pin ( > resultm.result' > u8 > resultm.anyhow_error > ) > = > fun () => > inl wasm_path = > matches > |> runtime.matches_get_one (get_args () .wasm |> fst) > |> optionm'.unbox > |> optionm.value > |> sm'.from_std_string > > trace Verbose (fun () => "spiral_wasm.run") fun () => { wasm_path } > > inl wasm = wasm_path |> file_system.read |> resultm.try' > > let fn (retry : u8) = > fun () => > inl worker = near_workspaces.sandbox_worker () |> resultm.try' > inl contract = worker |> near_workspaces.dev_deploy wasm |> > async.await |> resultm.try' > > trace Verbose (fun () => "spiral_wasm.run") fun () => { retry > worker contract } > > inl result = > contract > |> near_workspaces.call "state_main" > |> near_workspaces.gas (near_workspaces.from_tgas 300) > |> near_workspaces.transact > |> async.await > |> resultm.try' > > trace Verbose (fun () => "spiral_wasm.run") fun () => { retry > result } > > result > |> near_workspaces.logs > |> am'.vec_map sm'.ref_to_std_string > |> am'.vec_for_each console.write_line > > trace_raw Info (fun () => " ") > result |> near_workspaces.print_usd retry > > inl result2 = result |> near_workspaces.into_result > > trace Verbose (fun () => "spiral_wasm.run") fun () => { result2 > } > > inl receipt_failures = result |> > near_workspaces.receipt_failures > inl receipt_failures_len = receipt_failures |> am'.vec_len |> > i32 > > trace Verbose > fun () => "spiral_wasm.run" > fun () => { receipt_failures_len receipt_failures } > > inl receipt_outcomes = result |> > near_workspaces.receipt_outcomes > inl receipt_outcomes_len = receipt_outcomes |> am'.vec_len |> > i32 > > trace Verbose > fun () => "spiral_wasm.run" > fun () => { receipt_outcomes_len receipt_outcomes } > > inl json = result |> near_workspaces.json > > trace Verbose (fun () => "spiral_wasm.run") fun () => { json } > > inl borsh = result |> near_workspaces.borsh > > trace Verbose (fun () => "spiral_wasm.run") fun () => { borsh } > > inl error = { receipt_outcomes_len retry receipt_failures } |> > sm'.format > if receipt_failures_len > 0 > then (Ok (Some error) : _ _ resultm.anyhow_error) |> resultm.box > elif receipt_outcomes_len > 1 > then (Ok None : _ _ resultm.anyhow_error) |> resultm.box > else error |> resultm.anyhow_error |> resultm.err > |> async.new_future_move > > let rec loop (retry : u8) = > inl max = 15 > inl init (error : _ string) = > fun () => > { retry error } > |> async.new_future_move > fun () => > inl result = > fn retry > |> async.await > |> resultm.map_error' sm'.format' > |> resultm.unbox > match result with > | Ok (None) => > init None > |> async.await > |> Ok > | Ok (Some error) => > trace Critical (fun () => "spiral_wasm.run / Ok (Some > error)") fun () => { retry error } > init (Some error) > |> async.await > |> Error > | Error error when retry >= max => > trace Warning (fun () => "spiral_wasm.run / Error error") > fun () => { retry error } > trace_raw Warning (fun () => "\n") > init None > |> async.await > |> Ok > | Error error => > trace Warning (fun () => "spiral_wasm.run / Error error") > fun () => { retry error } > trace_raw Warning (fun () => "\n") > loop (retry + 1) |> async.await > |> async.new_future_move > inl retries = loop 1 |> async.await > > trace Verbose (fun () => "spiral_wasm.run") fun () => { retries } > > match retries with > | Ok { retry } => Ok retry |> resultm.box > | Error { retry error } => { retries error } |> sm'.format |> > resultm.anyhow_error |> resultm.err > > |> async.new_future_move > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### main > > ── spiral ────────────────────────────────────────────────────────────────────── > ///! _ > > inl main (args : array_base string) = > inl command = get_command () > inl arg_matches = command |> runtime.command_get_matches > > inl trace_level = > arg_matches > |> runtime.matches_get_one (get_args () .trace_level |> fst) > |> optionm'.unbox > |> optionm.map ( > sm'.from_std_string > >> reflection.union_try_pick > ) > |> optionm'.flatten > |> optionm'.default_value Verbose > > inl trace_state = get_trace_state_or_init (Some trace_level) > > trace Verbose > fun () => "spiral_wasm.main" > fun () => { args } > > inl exception = > arg_matches > |> runtime.matches_get_one (get_args () .exception |> fst) > |> optionm'.map (sm'.from_std_string >> sm'.trim_start [[ '\\' ]] >> > sm'.trim_end [[ '\\' ]]) > |> optionm'.unbox > > inl result = > arg_matches > |> run > |> async.block_on_tokio > |> resultm.map_error' sm'.format' > > match result |> resultm.unbox, exception with > | Ok retries, Some exception => > ($'$"spiral_wasm.main / retries: {!retries} / exception: > \'{!exception}\'"' : string) > |> resultm.err |> resultm.unwrap' > | Error _error, Some ("") => > () > | Error error, Some exception when error |> sm'.from_std_string |> > sm'.contains exception => > () > | Error error, Some exception => > ($'$"spiral_wasm.main / exception: \'{!exception}\' / error: {!error}"' > : string) > |> resultm.err |> resultm.unwrap' > | Ok _retries, _ => > () > | Error _error, _ => > result |> resultm.unwrap' |> ignore > > 0i32 > > inl main () = > $'let main args = !main args' : () 00:00:11 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 8454 } 00:00:11 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/spiral/apps/wasm/spiral_wasm.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/spiral/apps/wasm/spiral_wasm.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:12 v #5 ! [NbConvertApp] Converting notebook c:/home/git/spiral/apps/wasm/spiral_wasm.dib.ipynb to html 00:00:12 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:12 v #7 ! validate(nb) 00:00:12 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:12 v #9 ! return _pygments_highlight( 00:00:13 v #10 ! [NbConvertApp] Writing 306846 bytes to c:\home\git\spiral\apps\wasm\spiral_wasm.dib.html 00:00:13 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 858 } 00:00:13 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 858 } 00:00:13 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/spiral/apps/wasm/spiral_wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/spiral/apps/wasm/spiral_wasm.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:13 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:13 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:13 d #16 spiral.run / dib / { exit_code = 0; result_length = 9371 } 00:00:00 d #1 writeDibCode / output: Spi / path: spiral_wasm.dib 00:00:00 d #2 parseDibCode / output: Spi / file: spiral_wasm.dib 00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: spiral_wasm / hash: / code.Length: 248118 spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: C:\home\git\polyglot\target\Builder\spiral_wasm polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\spiral\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: C:\home\git\spiral\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\spiral_wasm / ProjectName: spiral_wasm / Language: rs / Runtime: / root: C:\home\git\polyglot Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) Thanks to the contributor! @0x53A Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\spiral_wasm\spiral_wasm.fsproj... Project and references (14 source files) parsed in 2616ms Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Started Fable compilation... Fable compilation finished in 10958ms .\deps\spiral\lib\spiral\common.fsx(2199,0): (2199,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\sm.fsx(561,0): (561,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\crypto.fsx(2426,0): (2426,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\networking.fsx(5050,0): (5050,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\trace.fsx(2232,0): (2232,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\runtime.fsx(7321,0): (7321,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\file_system.fsx(19036,0): (19036,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! spiral/apps/wasm/build.ps1 / path: C:\home\git\polyglot\target\Builder\spiral_wasm/target/rs/spiral_wasm.rs spiral/apps/wasm/build.ps1 / $targetDir = C:\home\git\polyglot\target\Builder\spiral_wasm / $projectName: spiral_wasm / $env:CI:'' warning: /mnt/c/home/git/spiral/lib/spiral/near/wallet/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /mnt/c/home/git/spiral/workspace/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /mnt/c/home/git/spiral/apps/spiral/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /mnt/c/home/git/spiral/apps/wasm/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. Compiling fable_library_rust v0.1.0 (/mnt/c/home/git/spiral/deps/polyglot/lib/rust/fable/fable_modules/fable-library-rust) Compiling spiral_wasm v0.0.1 (/mnt/c/home/git/spiral/apps/wasm) Finished `release` profile [optimized] target(s) in 2m 09s warning: C:\home\git\spiral\deps\polyglot\apps\spiral\temp\cube\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: C:\home\git\spiral\deps\polyglot\apps\spiral\temp\extension\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: C:\home\git\spiral\deps\polyglot\workspace\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: C:\home\git\spiral\deps\polyglot\apps\plot\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: C:\home\git\spiral\deps\polyglot\lib\math\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: C:\home\git\spiral\deps\polyglot\apps\spiral\temp\test\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: C:\home\git\spiral\deps\polyglot\apps\chat\contract\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: C:\home\git\spiral\deps\polyglot\examples\rust\exercism\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: C:\home\git\spiral\deps\polyglot\apps\chat\contract\tests\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. Compiling fable_library_rust v0.1.0 (C:\home\git\spiral\deps\polyglot\lib\rust\fable\fable_modules\fable-library-rust) Compiling plot v0.0.1 (C:\home\git\spiral\deps\polyglot\apps\plot) warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:667:33 | 667 | let v4: string = append((v0.l0.get().clone()), (v1)); | ^ ^ | = note: `#[warn(unused_parens)]` on by default help: remove these parentheses | 667 - let v4: string = append((v0.l0.get().clone()), (v1)); 667 + let v4: string = append(v0.l0.get().clone(), (v1)); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:667:56 | 667 | let v4: string = append((v0.l0.get().clone()), (v1)); | ^ ^ | help: remove these parentheses | 667 - let v4: string = append((v0.l0.get().clone()), (v1)); 667 + let v4: string = append((v0.l0.get().clone()), v1); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:749:13 | 749 | (append( | ^ ... 761 | )), | ^ | help: remove these parentheses | 749 ~ append( 750 | (append( ... 760 | string(" / "), 761 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:762:13 | 762 | (v180), | ^ ^ | help: remove these parentheses | 762 - (v180), 762 + v180, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:750:17 | 750 | (append( | ^ ... 759 | )), | ^ | help: remove these parentheses | 750 ~ append( 751 | (append( ... 758 | string("networking.test_port_open"), 759 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:751:21 | 751 | (append( | ^ ... 757 | )), | ^ | help: remove these parentheses | 751 ~ append( 752 | (append( ... 756 | string(" "), 757 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:752:25 | 752 | (append( | ^ ... 755 | )), | ^ | help: remove these parentheses | 752 ~ append( 753 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 754 | (toString(v0.l0.get().clone())), 755 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:753:29 | 753 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 753 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 753 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:754:29 | 754 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 754 - (toString(v0.l0.get().clone())), 754 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:753:37 | 753 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 753 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 753 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:753:45 | 753 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 753 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 753 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:753:74 | 753 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 753 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 753 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:753:53 | 753 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 753 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 753 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:905:13 | 905 | (append( | ^ ... 917 | )), | ^ | help: remove these parentheses | 905 ~ append( 906 | (append( ... 916 | string(" / "), 917 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:918:13 | 918 | (v107), | ^ ^ | help: remove these parentheses | 918 - (v107), 918 + v107, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:906:17 | 906 | (append( | ^ ... 915 | )), | ^ | help: remove these parentheses | 906 ~ append( 907 | (append( ... 914 | string("async.run_with_timeout_async"), 915 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:907:21 | 907 | (append( | ^ ... 913 | )), | ^ | help: remove these parentheses | 907 ~ append( 908 | (append( ... 912 | string(" "), 913 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:908:25 | 908 | (append( | ^ ... 911 | )), | ^ | help: remove these parentheses | 908 ~ append( 909 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 910 | (toString(v0.l0.get().clone())), 911 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:909:29 | 909 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 909 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 909 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:910:29 | 910 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 910 - (toString(v0.l0.get().clone())), 910 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:909:37 | 909 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 909 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 909 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:909:45 | 909 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 909 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 909 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:909:74 | 909 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 909 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 909 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:909:53 | 909 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 909 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 909 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1023:13 | 1023 | (append( | ^ ... 1035 | )), | ^ | help: remove these parentheses | 1023 ~ append( 1024 | (append( ... 1034 | string(" / "), 1035 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1036:13 | 1036 | (v180), | ^ ^ | help: remove these parentheses | 1036 - (v180), 1036 + v180, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1024:17 | 1024 | (append( | ^ ... 1033 | )), | ^ | help: remove these parentheses | 1024 ~ append( 1025 | (append( ... 1032 | string("async.run_with_timeout_async**"), 1033 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1025:21 | 1025 | (append( | ^ ... 1031 | )), | ^ | help: remove these parentheses | 1025 ~ append( 1026 | (append( ... 1030 | string(" "), 1031 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1026:25 | 1026 | (append( | ^ ... 1029 | )), | ^ | help: remove these parentheses | 1026 ~ append( 1027 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1028 | (toString(v0.l0.get().clone())), 1029 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1027:29 | 1027 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1027 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1027 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1028:29 | 1028 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 1028 - (toString(v0.l0.get().clone())), 1028 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1027:37 | 1027 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1027 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1027 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1027:45 | 1027 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1027 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1027 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1027:74 | 1027 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1027 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1027 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1027:53 | 1027 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1027 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1027 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1206:13 | 1206 | (append( | ^ ... 1218 | )), | ^ | help: remove these parentheses | 1206 ~ append( 1207 | (append( ... 1217 | string(" / "), 1218 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1219:13 | 1219 | (v367), | ^ ^ | help: remove these parentheses | 1219 - (v367), 1219 + v367, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1207:17 | 1207 | (append( | ^ ... 1216 | )), | ^ | help: remove these parentheses | 1207 ~ append( 1208 | (append( ... 1215 | string("networking.wait_for_port_access"), 1216 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1208:21 | 1208 | (append( | ^ ... 1214 | )), | ^ | help: remove these parentheses | 1208 ~ append( 1209 | (append( ... 1213 | string(" "), 1214 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1209:25 | 1209 | (append( | ^ ... 1212 | )), | ^ | help: remove these parentheses | 1209 ~ append( 1210 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1211 | (toString(v0.l0.get().clone())), 1212 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1210:29 | 1210 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1210 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1210 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1211:29 | 1211 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 1211 - (toString(v0.l0.get().clone())), 1211 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1210:37 | 1210 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1210 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1210 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1210:45 | 1210 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1210 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1210 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1210:74 | 1210 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1210 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1210 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1210:53 | 1210 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1210 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1210 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:837:33 | 837 | let v4: string = append((v0.l0.get().clone()), (v1)); | ^ ^ | help: remove these parentheses | 837 - let v4: string = append((v0.l0.get().clone()), (v1)); 837 + let v4: string = append(v0.l0.get().clone(), (v1)); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:837:56 | 837 | let v4: string = append((v0.l0.get().clone()), (v1)); | ^ ^ | help: remove these parentheses | 837 - let v4: string = append((v0.l0.get().clone()), (v1)); 837 + let v4: string = append((v0.l0.get().clone()), v1); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:881:13 | 881 | (append( | ^ ... 893 | )), | ^ | help: remove these parentheses | 881 ~ append( 882 | (append( ... 892 | string(" / "), 893 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:894:13 | 894 | (v10), | ^ ^ | help: remove these parentheses | 894 - (v10), 894 + v10, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:882:17 | 882 | (append( | ^ ... 891 | )), | ^ | help: remove these parentheses | 882 ~ append( 883 | (append( ... 890 | string("runtime.current_process_kill / exiting... 3"), 891 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:883:21 | 883 | (append( | ^ ... 889 | )), | ^ | help: remove these parentheses | 883 ~ append( 884 | (append( ... 888 | string(" "), 889 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:884:25 | 884 | (append( | ^ ... 887 | )), | ^ | help: remove these parentheses | 884 ~ append( 885 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 886 | (toString(v0.l0.get().clone())), 887 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:885:29 | 885 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 885 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 885 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:886:29 | 886 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 886 - (toString(v0.l0.get().clone())), 886 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:885:37 | 885 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 885 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 885 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:885:45 | 885 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 885 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 885 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:885:74 | 885 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 885 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 885 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:885:53 | 885 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 885 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 885 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:979:13 | 979 | (append( | ^ ... 991 | )), | ^ | help: remove these parentheses | 979 ~ append( 980 | (append( ... 990 | string(" / "), 991 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:992:13 | 992 | (v10), | ^ ^ | help: remove these parentheses | 992 - (v10), 992 + v10, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:980:17 | 980 | (append( | ^ ... 989 | )), | ^ | help: remove these parentheses | 980 ~ append( 981 | (append( ... 988 | string("runtime.current_process_kill / exiting... 2"), 989 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:981:21 | 981 | (append( | ^ ... 987 | )), | ^ | help: remove these parentheses | 981 ~ append( 982 | (append( ... 986 | string(" "), 987 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:982:25 | 982 | (append( | ^ ... 985 | )), | ^ | help: remove these parentheses | 982 ~ append( 983 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 984 | (toString(v0.l0.get().clone())), 985 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:983:29 | 983 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 983 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 983 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:984:29 | 984 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 984 - (toString(v0.l0.get().clone())), 984 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:983:37 | 983 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 983 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 983 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:983:45 | 983 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 983 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 983 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:983:74 | 983 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 983 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 983 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:983:53 | 983 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 983 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 983 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1042:13 | 1042 | (append( | ^ ... 1054 | )), | ^ | help: remove these parentheses | 1042 ~ append( 1043 | (append( ... 1053 | string(" / "), 1054 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1055:13 | 1055 | (v10), | ^ ^ | help: remove these parentheses | 1055 - (v10), 1055 + v10, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1043:17 | 1043 | (append( | ^ ... 1052 | )), | ^ | help: remove these parentheses | 1043 ~ append( 1044 | (append( ... 1051 | string("runtime.current_process_kill / exiting... 1"), 1052 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1044:21 | 1044 | (append( | ^ ... 1050 | )), | ^ | help: remove these parentheses | 1044 ~ append( 1045 | (append( ... 1049 | string(" "), 1050 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1045:25 | 1045 | (append( | ^ ... 1048 | )), | ^ | help: remove these parentheses | 1045 ~ append( 1046 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1047 | (toString(v0.l0.get().clone())), 1048 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1046:29 | 1046 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1046 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1046 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1047:29 | 1047 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 1047 - (toString(v0.l0.get().clone())), 1047 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1046:37 | 1046 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1046 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1046 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1046:45 | 1046 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1046 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1046 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1046:74 | 1046 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1046 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1046 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1046:53 | 1046 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1046 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1046 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1123:30 | 1123 | break '_method26 (match v0.get().clone().as_ref() { | ^ ... 1161 | }); | ^ | help: remove these parentheses | 1123 ~ break '_method26 match v0.get().clone().as_ref() { 1124 | Runtime::UH0::UH0_0 => (v1.get().clone(), v2.get().clone(), v3.get().clone()), ... 1160 | } 1161 ~ }; | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1168:58 | 1168 | (Runtime::method27(v0, (v1) + 1_i32))(append((v2), string(" "))) | ^ ^ | help: remove these parentheses | 1168 - (Runtime::method27(v0, (v1) + 1_i32))(append((v2), string(" "))) 1168 + (Runtime::method27(v0, (v1) + 1_i32))(append(v2, string(" "))) | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1231:25 | 1231 | ((Runtime::method27((v3) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 1231 - ((Runtime::method27((v3) - 1_i32, 0_i32))(string(""))), 1231 + (Runtime::method27((v3) - 1_i32, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1292:25 | 1292 | ((Runtime::method27((v3) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 1292 - ((Runtime::method27((v3) - 1_i32, 0_i32))(string(""))), 1292 + (Runtime::method27((v3) - 1_i32, 0_i32))(string("")), | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1309:30 | 1309 | break '_method28 (match v2.get().clone().as_ref() { | ^ ... 1340 | }); | ^ | help: remove these parentheses | 1309 ~ break '_method28 match v2.get().clone().as_ref() { 1310 | Runtime::UH1::UH1_0 => { ... 1339 | } 1340 ~ }; | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1347:30 | 1347 | break '_method29 (if (v1.get().clone()) >= 2_i64 { | ^ ... 1378 | }); | ^ | help: remove these parentheses | 1347 ~ break '_method29 if (v1.get().clone()) >= 2_i64 { 1348 | false ... 1377 | } 1378 ~ }; | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1394:30 | 1394 | break '_method30 ({ | ^ ... 1468 | }); | ^ | help: remove these parentheses | 1394 ~ break '_method30 { 1395 | let v98: Runtime::US7 = if string("") == (v1.get().clone()) { ... 1467 | } 1468 ~ }; | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1448:36 | 1448 | ... append((v0.get().clone()), (ofChar(v110_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1448 - append((v0.get().clone()), (ofChar(v110_0_0.clone()))); 1448 + append(v0.get().clone(), (ofChar(v110_0_0.clone()))); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1448:56 | 1448 | ... append((v0.get().clone()), (ofChar(v110_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1448 - append((v0.get().clone()), (ofChar(v110_0_0.clone()))); 1448 + append((v0.get().clone()), ofChar(v110_0_0.clone())); | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1484:30 | 1484 | break '_method31 (match v4.get().clone().as_ref() { | ^ ... 1519 | }); | ^ | help: remove these parentheses | 1484 ~ break '_method31 match v4.get().clone().as_ref() { 1485 | Runtime::UH1::UH1_0 => { ... 1518 | } 1519 ~ }; | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1526:30 | 1526 | break '_method32 (if (v1.get().clone()) >= 3_i64 { | ^ ... 1562 | }); | ^ | help: remove these parentheses | 1526 ~ break '_method32 if (v1.get().clone()) >= 3_i64 { 1527 | false ... 1561 | } 1562 ~ }; | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1578:30 | 1578 | break '_method33 ({ | ^ ... 1652 | }); | ^ | help: remove these parentheses | 1578 ~ break '_method33 { 1579 | let v106: Runtime::US7 = if string("") == (v1.get().clone()) { ... 1651 | } 1652 ~ }; | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1632:36 | 1632 | ... append((v0.get().clone()), (ofChar(v118_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1632 - append((v0.get().clone()), (ofChar(v118_0_0.clone()))); 1632 + append(v0.get().clone(), (ofChar(v118_0_0.clone()))); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1632:56 | 1632 | ... append((v0.get().clone()), (ofChar(v118_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1632 - append((v0.get().clone()), (ofChar(v118_0_0.clone()))); 1632 + append((v0.get().clone()), ofChar(v118_0_0.clone())); | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1659:30 | 1659 | break '_method34 (if (v1.get().clone()) >= (length(v0.get().clone())) { | ^ ... 1671 | }); | ^ | help: remove these parentheses | 1659 ~ break '_method34 if (v1.get().clone()) >= (length(v0.get().clone())) { 1660 | v1.get().clone() ... 1670 | } 1671 ~ }; | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1687:30 | 1687 | break '_method35 ({ | ^ ... 1737 | }); | ^ | help: remove these parentheses | 1687 ~ break '_method35 { 1688 | let v66: Runtime::US7 = if string("") == (v1.get().clone()) { ... 1736 | } 1737 ~ }; | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1717:54 | 1717 | let v0_temp: string = append((v0.get().clone()), (ofChar(v66_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1717 - let v0_temp: string = append((v0.get().clone()), (ofChar(v66_0_0.clone()))); 1717 + let v0_temp: string = append(v0.get().clone(), (ofChar(v66_0_0.clone()))); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1717:74 | 1717 | let v0_temp: string = append((v0.get().clone()), (ofChar(v66_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1717 - let v0_temp: string = append((v0.get().clone()), (ofChar(v66_0_0.clone()))); 1717 + let v0_temp: string = append((v0.get().clone()), ofChar(v66_0_0.clone())); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2094:37 | 2094 | ... ((Runtime::method27((v421) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 2094 - ((Runtime::method27((v421) - 1_i32, 0_i32))(string(""))), 2094 + (Runtime::method27((v421) - 1_i32, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2468:13 | 2468 | (append( | ^ ... 2480 | )), | ^ | help: remove these parentheses | 2468 ~ append( 2469 | (append( ... 2479 | string(" / "), 2480 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2481:13 | 2481 | (v911), | ^ ^ | help: remove these parentheses | 2481 - (v911), 2481 + v911, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2469:17 | 2469 | (append( | ^ ... 2478 | )), | ^ | help: remove these parentheses | 2469 ~ append( 2470 | (append( ... 2477 | string("runtime.execute_with_options_async"), 2478 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2470:21 | 2470 | (append( | ^ ... 2476 | )), | ^ | help: remove these parentheses | 2470 ~ append( 2471 | (append( ... 2475 | string(" "), 2476 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2471:25 | 2471 | (append( | ^ ... 2474 | )), | ^ | help: remove these parentheses | 2471 ~ append( 2472 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2473 | (toString(v0.l0.get().clone())), 2474 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2472:29 | 2472 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2472 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2472 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2473:29 | 2473 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 2473 - (toString(v0.l0.get().clone())), 2473 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2472:37 | 2472 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2472 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2472 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2472:45 | 2472 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2472 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2472 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2472:74 | 2472 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2472 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2472 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2472:53 | 2472 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2472 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2472 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2594:13 | 2594 | (append( | ^ ... 2606 | )), | ^ | help: remove these parentheses | 2594 ~ append( 2595 | (append( ... 2605 | string(" / "), 2606 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2607:13 | 2607 | (v11), | ^ ^ | help: remove these parentheses | 2607 - (v11), 2607 + v11, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2595:17 | 2595 | (append( | ^ ... 2604 | )), | ^ | help: remove these parentheses | 2595 ~ append( 2596 | (append( ... 2603 | (v8), 2604 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2596:21 | 2596 | (append( | ^ ... 2602 | )), | ^ | help: remove these parentheses | 2596 ~ append( 2597 | (append( ... 2601 | string(" "), 2602 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2603:21 | 2603 | (v8), | ^ ^ | help: remove these parentheses | 2603 - (v8), 2603 + v8, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2597:25 | 2597 | (append( | ^ ... 2600 | )), | ^ | help: remove these parentheses | 2597 ~ append( 2598 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2599 | (toString(v0.l0.get().clone())), 2600 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2598:29 | 2598 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2598 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2598 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2599:29 | 2599 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 2599 - (toString(v0.l0.get().clone())), 2599 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2598:37 | 2598 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2598 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2598 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2598:45 | 2598 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2598 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2598 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2598:74 | 2598 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2598 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2598 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2598:53 | 2598 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2598 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2598 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2755:13 | 2755 | (append( | ^ ... 2767 | )), | ^ | help: remove these parentheses | 2755 ~ append( 2756 | (append( ... 2766 | string(" / "), 2767 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2768:13 | 2768 | (v143), | ^ ^ | help: remove these parentheses | 2768 - (v143), 2768 + v143, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2756:17 | 2756 | (append( | ^ ... 2765 | )), | ^ | help: remove these parentheses | 2756 ~ append( 2757 | (append( ... 2764 | string("runtime.execute_with_options_async / WaitForExitAsync"), 2765 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2757:21 | 2757 | (append( | ^ ... 2763 | )), | ^ | help: remove these parentheses | 2757 ~ append( 2758 | (append( ... 2762 | string(" "), 2763 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2758:25 | 2758 | (append( | ^ ... 2761 | )), | ^ | help: remove these parentheses | 2758 ~ append( 2759 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2760 | (toString(v0.l0.get().clone())), 2761 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2759:29 | 2759 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2759 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2759 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2760:29 | 2760 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 2760 - (toString(v0.l0.get().clone())), 2760 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2759:37 | 2759 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2759 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2759 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2759:45 | 2759 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2759 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2759 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2759:74 | 2759 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2759 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2759 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2759:53 | 2759 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2759 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2759 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3030:13 | 3030 | (append( | ^ ... 3042 | )), | ^ | help: remove these parentheses | 3030 ~ append( 3031 | (append( ... 3041 | string(" / "), 3042 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3043:13 | 3043 | (v913), | ^ ^ | help: remove these parentheses | 3043 - (v913), 3043 + v913, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3031:17 | 3031 | (append( | ^ ... 3040 | )), | ^ | help: remove these parentheses | 3031 ~ append( 3032 | (append( ... 3039 | string("runtime.execute_with_options_async"), 3040 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3032:21 | 3032 | (append( | ^ ... 3038 | )), | ^ | help: remove these parentheses | 3032 ~ append( 3033 | (append( ... 3037 | string(" "), 3038 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3033:25 | 3033 | (append( | ^ ... 3036 | )), | ^ | help: remove these parentheses | 3033 ~ append( 3034 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3035 | (toString(v0.l0.get().clone())), 3036 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3034:29 | 3034 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3034 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3034 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3035:29 | 3035 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 3035 - (toString(v0.l0.get().clone())), 3035 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3034:37 | 3034 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3034 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3034 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3034:45 | 3034 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3034 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3034 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3034:74 | 3034 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3034 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3034 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3034:53 | 3034 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3034 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3034 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3191:30 | 3191 | break '_method57 (if (v1.get().clone()) >= 4_i64 { | ^ ... 3232 | }); | ^ | help: remove these parentheses | 3191 ~ break '_method57 if (v1.get().clone()) >= 4_i64 { 3192 | false ... 3231 | } 3232 ~ }; | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3248:30 | 3248 | break '_method58 ({ | ^ ... 3309 | }); | ^ | help: remove these parentheses | 3248 ~ break '_method58 { 3249 | let v114: Runtime::US7 = if string("") == (v1.get().clone()) { ... 3308 | } 3309 ~ }; | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3289:36 | 3289 | ... append((v0.get().clone()), (ofChar(v114_0_0.clone()))); | ^ ^ | help: remove these parentheses | 3289 - append((v0.get().clone()), (ofChar(v114_0_0.clone()))); 3289 + append(v0.get().clone(), (ofChar(v114_0_0.clone()))); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3289:56 | 3289 | ... append((v0.get().clone()), (ofChar(v114_0_0.clone()))); | ^ ^ | help: remove these parentheses | 3289 - append((v0.get().clone()), (ofChar(v114_0_0.clone()))); 3289 + append((v0.get().clone()), ofChar(v114_0_0.clone())); | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3316:30 | 3316 | break '_method60 (if (v1.get().clone()) >= 3_i64 { | ^ ... 3352 | }); | ^ | help: remove these parentheses | 3316 ~ break '_method60 if (v1.get().clone()) >= 3_i64 { 3317 | false ... 3351 | } 3352 ~ }; | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3408:25 | 3408 | ((Runtime::method27((v3) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 3408 - ((Runtime::method27((v3) - 1_i32, 0_i32))(string(""))), 3408 + (Runtime::method27((v3) - 1_i32, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3451:28 | 3451 | append((ofChar('\\')), (ofChar(v196_0_0.clone()))), | ^ ^ | help: remove these parentheses | 3451 - append((ofChar('\\')), (ofChar(v196_0_0.clone()))), 3451 + append(ofChar('\\'), (ofChar(v196_0_0.clone()))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3451:44 | 3451 | append((ofChar('\\')), (ofChar(v196_0_0.clone()))), | ^ ^ | help: remove these parentheses | 3451 - append((ofChar('\\')), (ofChar(v196_0_0.clone()))), 3451 + append((ofChar('\\')), ofChar(v196_0_0.clone())), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3514:25 | 3514 | ((Runtime::method27((v3) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 3514 - ((Runtime::method27((v3) - 1_i32, 0_i32))(string(""))), 3514 + (Runtime::method27((v3) - 1_i32, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3557:28 | 3557 | append((ofChar('`')), (ofChar(v196_0_0.clone()))), | ^ ^ | help: remove these parentheses | 3557 - append((ofChar('`')), (ofChar(v196_0_0.clone()))), 3557 + append(ofChar('`'), (ofChar(v196_0_0.clone()))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3557:43 | 3557 | append((ofChar('`')), (ofChar(v196_0_0.clone()))), | ^ ^ | help: remove these parentheses | 3557 - append((ofChar('`')), (ofChar(v196_0_0.clone()))), 3557 + append((ofChar('`')), ofChar(v196_0_0.clone())), | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3580:30 | 3580 | break '_method61 (match v4.get().clone().as_ref() { | ^ ... 3615 | }); | ^ | help: remove these parentheses | 3580 ~ break '_method61 match v4.get().clone().as_ref() { 3581 | Runtime::UH3::UH3_0 => { ... 3614 | } 3615 ~ }; | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3622:30 | 3622 | break '_method62 (match v0.get().clone().as_ref() { | ^ ... 3642 | }); | ^ | help: remove these parentheses | 3622 ~ break '_method62 match v0.get().clone().as_ref() { 3623 | Runtime::UH2::UH2_0 => v1.get().clone(), ... 3641 | } 3642 ~ }; | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3658:30 | 3658 | break '_method59 ({ | ^ ... 3762 | }); | ^ | help: remove these parentheses | 3658 ~ break '_method59 { 3659 | let v106: Runtime::US7 = if string("") == (v1.get().clone()) { ... 3761 | } 3762 ~ }; | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3798:30 | 3798 | break '_method64 ({ | ^ ... 3871 | }); | ^ | help: remove these parentheses | 3798 ~ break '_method64 { 3799 | let v106: Runtime::US7 = if string("") == (v1.get().clone()) { ... 3870 | } 3871 ~ }; | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3887:30 | 3887 | break '_method56 ({ | ^ ... 4351 | }); | ^ | help: remove these parentheses | 3887 ~ break '_method56 { 3888 | let v5: bool = string("") == (v1.get().clone()); ... 4350 | } 4351 ~ }; | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:4003:41 | 4003 | ... ((Runtime::method27((v4.get().clone()) - 1_i32, 0_i32))( | ^ 4004 | ... string(""), 4005 | ... )), | ^ | help: remove these parentheses | 4003 ~ (Runtime::method27((v4.get().clone()) - 1_i32, 0_i32))( 4004 | string(""), 4005 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:4131:57 | 4131 | ... ((Runtime::method27( | ^ ... 4136 | ... )), | ^ | help: remove these parentheses | 4131 ~ (Runtime::method27( 4132 | (v306) - 1_i32, ... 4135 | string("") 4136 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:611:33 | 611 | let v4: string = append((v0.l0.get().clone()), (v1)); | ^ ^ | help: remove these parentheses | 611 - let v4: string = append((v0.l0.get().clone()), (v1)); 611 + let v4: string = append(v0.l0.get().clone(), (v1)); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:611:56 | 611 | let v4: string = append((v0.l0.get().clone()), (v1)); | ^ ^ | help: remove these parentheses | 611 - let v4: string = append((v0.l0.get().clone()), (v1)); 611 + let v4: string = append((v0.l0.get().clone()), v1); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:776:13 | 776 | (append( | ^ ... 788 | )), | ^ | help: remove these parentheses | 776 ~ append( 777 | (append( ... 787 | string(" / "), 788 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:789:13 | 789 | (v29), | ^ ^ | help: remove these parentheses | 789 - (v29), 789 + v29, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:777:17 | 777 | (append( | ^ ... 786 | )), | ^ | help: remove these parentheses | 777 ~ append( 778 | (append( ... 785 | (v8), 786 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:778:21 | 778 | (append( | ^ ... 784 | )), | ^ | help: remove these parentheses | 778 ~ append( 779 | (append( ... 783 | string(" "), 784 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:785:21 | 785 | (v8), | ^ ^ | help: remove these parentheses | 785 - (v8), 785 + v8, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:779:25 | 779 | (append( | ^ ... 782 | )), | ^ | help: remove these parentheses | 779 ~ append( 780 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 781 | (toString(v0.l0.get().clone())), 782 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:780:29 | 780 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 780 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 780 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:781:29 | 781 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 781 - (toString(v0.l0.get().clone())), 781 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:780:37 | 780 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 780 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 780 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:780:45 | 780 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 780 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 780 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:780:74 | 780 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 780 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 780 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:780:53 | 780 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 780 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 780 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:890:33 | 890 | let v4: string = append((v0.l0.get().clone()), (v1)); | ^ ^ | help: remove these parentheses | 890 - let v4: string = append((v0.l0.get().clone()), (v1)); 890 + let v4: string = append(v0.l0.get().clone(), (v1)); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:890:56 | 890 | let v4: string = append((v0.l0.get().clone()), (v1)); | ^ ^ | help: remove these parentheses | 890 - let v4: string = append((v0.l0.get().clone()), (v1)); 890 + let v4: string = append((v0.l0.get().clone()), v1); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1001:13 | 1001 | (append( | ^ ... 1013 | )), | ^ | help: remove these parentheses | 1001 ~ append( 1002 | (append( ... 1012 | string(" / "), 1013 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1014:13 | 1014 | (v177), | ^ ^ | help: remove these parentheses | 1014 - (v177), 1014 + v177, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1002:17 | 1002 | (append( | ^ ... 1011 | )), | ^ | help: remove these parentheses | 1002 ~ append( 1003 | (append( ... 1010 | string("file_system.delete_directory_async"), 1011 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1003:21 | 1003 | (append( | ^ ... 1009 | )), | ^ | help: remove these parentheses | 1003 ~ append( 1004 | (append( ... 1008 | string(" "), 1009 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1004:25 | 1004 | (append( | ^ ... 1007 | )), | ^ | help: remove these parentheses | 1004 ~ append( 1005 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1006 | (toString(v0.l0.get().clone())), 1007 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1005:29 | 1005 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1005 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1005 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1006:29 | 1006 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 1006 - (toString(v0.l0.get().clone())), 1006 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1005:37 | 1005 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1005 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1005 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1005:45 | 1005 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1005 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1005 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1005:74 | 1005 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1005 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1005 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1005:53 | 1005 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1005 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1005 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1174:13 | 1174 | (append( | ^ ... 1186 | )), | ^ | help: remove these parentheses | 1174 ~ append( 1175 | (append( ... 1185 | string(" / "), 1186 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1187:13 | 1187 | (v251), | ^ ^ | help: remove these parentheses | 1187 - (v251), 1187 + v251, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1175:17 | 1175 | (append( | ^ ... 1184 | )), | ^ | help: remove these parentheses | 1175 ~ append( 1176 | (append( ... 1183 | string("file_system.wait_for_file_access"), 1184 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1176:21 | 1176 | (append( | ^ ... 1182 | )), | ^ | help: remove these parentheses | 1176 ~ append( 1177 | (append( ... 1181 | string(" "), 1182 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1177:25 | 1177 | (append( | ^ ... 1180 | )), | ^ | help: remove these parentheses | 1177 ~ append( 1178 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1179 | (toString(v0.l0.get().clone())), 1180 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1178:29 | 1178 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1178 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1178 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1179:29 | 1179 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 1179 - (toString(v0.l0.get().clone())), 1179 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1178:37 | 1178 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1178 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1178 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1178:45 | 1178 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1178 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1178 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1178:74 | 1178 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1178 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1178 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1178:53 | 1178 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1178 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1178 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1352:13 | 1352 | (append( | ^ ... 1364 | )), | ^ | help: remove these parentheses | 1352 ~ append( 1353 | (append( ... 1363 | string(" / "), 1364 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1365:13 | 1365 | (v290), | ^ ^ | help: remove these parentheses | 1365 - (v290), 1365 + v290, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1353:17 | 1353 | (append( | ^ ... 1362 | )), | ^ | help: remove these parentheses | 1353 ~ append( 1354 | (append( ... 1361 | string("file_system.read_all_text_async"), 1362 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1354:21 | 1354 | (append( | ^ ... 1360 | )), | ^ | help: remove these parentheses | 1354 ~ append( 1355 | (append( ... 1359 | string(" "), 1360 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1355:25 | 1355 | (append( | ^ ... 1358 | )), | ^ | help: remove these parentheses | 1355 ~ append( 1356 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1357 | (toString(v0.l0.get().clone())), 1358 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1356:29 | 1356 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1356 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1356 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1357:29 | 1357 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 1357 - (toString(v0.l0.get().clone())), 1357 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1356:37 | 1356 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1356 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1356 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1356:45 | 1356 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1356 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1356 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1356:74 | 1356 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1356 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1356 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1356:53 | 1356 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1356 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1356 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1563:13 | 1563 | (append( | ^ ... 1575 | )), | ^ | help: remove these parentheses | 1563 ~ append( 1564 | (append( ... 1574 | string(" / "), 1575 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1576:13 | 1576 | (v104), | ^ ^ | help: remove these parentheses | 1576 - (v104), 1576 + v104, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1564:17 | 1564 | (append( | ^ ... 1573 | )), | ^ | help: remove these parentheses | 1564 ~ append( 1565 | (append( ... 1572 | string("file_system.file_delete"), 1573 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1565:21 | 1565 | (append( | ^ ... 1571 | )), | ^ | help: remove these parentheses | 1565 ~ append( 1566 | (append( ... 1570 | string(" "), 1571 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1566:25 | 1566 | (append( | ^ ... 1569 | )), | ^ | help: remove these parentheses | 1566 ~ append( 1567 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1568 | (toString(v0.l0.get().clone())), 1569 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1567:29 | 1567 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1567 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1567 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1568:29 | 1568 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 1568 - (toString(v0.l0.get().clone())), 1568 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1567:37 | 1567 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1567 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1567 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1567:45 | 1567 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1567 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1567 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1567:74 | 1567 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1567 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1567 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1567:53 | 1567 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1567 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1567 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1684:13 | 1684 | (append( | ^ ... 1696 | )), | ^ | help: remove these parentheses | 1684 ~ append( 1685 | (append( ... 1695 | string(" / "), 1696 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1697:13 | 1697 | (v177), | ^ ^ | help: remove these parentheses | 1697 - (v177), 1697 + v177, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1685:17 | 1685 | (append( | ^ ... 1694 | )), | ^ | help: remove these parentheses | 1685 ~ append( 1686 | (append( ... 1693 | string("delete_file_async"), 1694 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1686:21 | 1686 | (append( | ^ ... 1692 | )), | ^ | help: remove these parentheses | 1686 ~ append( 1687 | (append( ... 1691 | string(" "), 1692 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1687:25 | 1687 | (append( | ^ ... 1690 | )), | ^ | help: remove these parentheses | 1687 ~ append( 1688 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1689 | (toString(v0.l0.get().clone())), 1690 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1688:29 | 1688 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1688 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1688 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1689:29 | 1689 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 1689 - (toString(v0.l0.get().clone())), 1689 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1688:37 | 1688 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1688 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1688 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1688:45 | 1688 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1688 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1688 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1688:74 | 1688 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1688 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1688 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1688:53 | 1688 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1688 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1688 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1822:13 | 1822 | (append( | ^ ... 1834 | )), | ^ | help: remove these parentheses | 1822 ~ append( 1823 | (append( ... 1833 | string(" / "), 1834 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1835:13 | 1835 | (v248), | ^ ^ | help: remove these parentheses | 1835 - (v248), 1835 + v248, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1823:17 | 1823 | (append( | ^ ... 1832 | )), | ^ | help: remove these parentheses | 1823 ~ append( 1824 | (append( ... 1831 | string("move_file_async"), 1832 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1824:21 | 1824 | (append( | ^ ... 1830 | )), | ^ | help: remove these parentheses | 1824 ~ append( 1825 | (append( ... 1829 | string(" "), 1830 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1825:25 | 1825 | (append( | ^ ... 1828 | )), | ^ | help: remove these parentheses | 1825 ~ append( 1826 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1827 | (toString(v0.l0.get().clone())), 1828 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1826:29 | 1826 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1826 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1826 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1827:29 | 1827 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 1827 - (toString(v0.l0.get().clone())), 1827 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1826:37 | 1826 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1826 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1826 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1826:45 | 1826 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1826 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1826 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1826:74 | 1826 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1826 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1826 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1826:53 | 1826 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1826 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1826 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1950:13 | 1950 | (append( | ^ ... 1962 | )), | ^ | help: remove these parentheses | 1950 ~ append( 1951 | (append( ... 1961 | string(" / "), 1962 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1963:13 | 1963 | (v107), | ^ ^ | help: remove these parentheses | 1963 - (v107), 1963 + v107, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1951:17 | 1951 | (append( | ^ ... 1960 | )), | ^ | help: remove these parentheses | 1951 ~ append( 1952 | (append( ... 1959 | string("async.run_with_timeout_async"), 1960 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1952:21 | 1952 | (append( | ^ ... 1958 | )), | ^ | help: remove these parentheses | 1952 ~ append( 1953 | (append( ... 1957 | string(" "), 1958 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1953:25 | 1953 | (append( | ^ ... 1956 | )), | ^ | help: remove these parentheses | 1953 ~ append( 1954 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1955 | (toString(v0.l0.get().clone())), 1956 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1954:29 | 1954 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1954 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1954 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1955:29 | 1955 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 1955 - (toString(v0.l0.get().clone())), 1955 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1954:37 | 1954 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1954 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1954 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1954:45 | 1954 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1954 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1954 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1954:74 | 1954 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1954 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1954 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:1954:53 | 1954 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1954 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1954 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2055:13 | 2055 | (append( | ^ ... 2067 | )), | ^ | help: remove these parentheses | 2055 ~ append( 2056 | (append( ... 2066 | string(" / "), 2067 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2068:13 | 2068 | (v180), | ^ ^ | help: remove these parentheses | 2068 - (v180), 2068 + v180, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2056:17 | 2056 | (append( | ^ ... 2065 | )), | ^ | help: remove these parentheses | 2056 ~ append( 2057 | (append( ... 2064 | string("async.run_with_timeout_async**"), 2065 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2057:21 | 2057 | (append( | ^ ... 2063 | )), | ^ | help: remove these parentheses | 2057 ~ append( 2058 | (append( ... 2062 | string(" "), 2063 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2058:25 | 2058 | (append( | ^ ... 2061 | )), | ^ | help: remove these parentheses | 2058 ~ append( 2059 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2060 | (toString(v0.l0.get().clone())), 2061 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2059:29 | 2059 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2059 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2059 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2060:29 | 2060 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 2060 - (toString(v0.l0.get().clone())), 2060 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2059:37 | 2059 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2059 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2059 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2059:45 | 2059 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2059 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2059 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2059:74 | 2059 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2059 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2059 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2059:53 | 2059 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2059 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2059 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2173:13 | 2173 | (append( | ^ ... 2185 | )), | ^ | help: remove these parentheses | 2173 ~ append( 2174 | (append( ... 2184 | string(" / "), 2185 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2186:13 | 2186 | (v180), | ^ ^ | help: remove these parentheses | 2186 - (v180), 2186 + v180, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2174:17 | 2174 | (append( | ^ ... 2183 | )), | ^ | help: remove these parentheses | 2174 ~ append( 2175 | (append( ... 2182 | string("file_system.read_all_text_retry_async"), 2183 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2175:21 | 2175 | (append( | ^ ... 2181 | )), | ^ | help: remove these parentheses | 2175 ~ append( 2176 | (append( ... 2180 | string(" "), 2181 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2176:25 | 2176 | (append( | ^ ... 2179 | )), | ^ | help: remove these parentheses | 2176 ~ append( 2177 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2178 | (toString(v0.l0.get().clone())), 2179 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2177:29 | 2177 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2177 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2177 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2178:29 | 2178 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 2178 - (toString(v0.l0.get().clone())), 2178 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2177:37 | 2177 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2177 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2177 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2177:45 | 2177 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2177 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2177 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2177:74 | 2177 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2177 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2177 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2177:53 | 2177 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2177 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2177 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2450:13 | 2450 | (append( | ^ ... 2462 | )), | ^ | help: remove these parentheses | 2450 ~ append( 2451 | (append( ... 2461 | string(" / "), 2462 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2463:13 | 2463 | (v216), | ^ ^ | help: remove these parentheses | 2463 - (v216), 2463 + v216, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2451:17 | 2451 | (append( | ^ ... 2460 | )), | ^ | help: remove these parentheses | 2451 ~ append( 2452 | (append( ... 2459 | string("file_system.create_dir"), 2460 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2452:21 | 2452 | (append( | ^ ... 2458 | )), | ^ | help: remove these parentheses | 2452 ~ append( 2453 | (append( ... 2457 | string(" "), 2458 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2453:25 | 2453 | (append( | ^ ... 2456 | )), | ^ | help: remove these parentheses | 2453 ~ append( 2454 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2455 | (toString(v0.l0.get().clone())), 2456 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2454:29 | 2454 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2454 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2454 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2455:29 | 2455 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 2455 - (toString(v0.l0.get().clone())), 2455 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2454:37 | 2454 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2454 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2454 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2454:45 | 2454 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2454 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2454 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2454:74 | 2454 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2454 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2454 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2454:53 | 2454 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2454 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2454 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2539:13 | 2539 | (append( | ^ ... 2551 | )), | ^ | help: remove these parentheses | 2539 ~ append( 2540 | (append( ... 2550 | string(" / "), 2551 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2552:13 | 2552 | (v104), | ^ ^ | help: remove these parentheses | 2552 - (v104), 2552 + v104, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2540:17 | 2540 | (append( | ^ ... 2549 | )), | ^ | help: remove these parentheses | 2540 ~ append( 2541 | (append( ... 2548 | string("file_system.create_dir"), 2549 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2541:21 | 2541 | (append( | ^ ... 2547 | )), | ^ | help: remove these parentheses | 2541 ~ append( 2542 | (append( ... 2546 | string(" "), 2547 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2542:25 | 2542 | (append( | ^ ... 2545 | )), | ^ | help: remove these parentheses | 2542 ~ append( 2543 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2544 | (toString(v0.l0.get().clone())), 2545 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2543:29 | 2543 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2543 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2543 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2544:29 | 2544 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 2544 - (toString(v0.l0.get().clone())), 2544 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2543:37 | 2543 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2543 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2543 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2543:45 | 2543 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2543 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2543 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2543:74 | 2543 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2543 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2543 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2543:53 | 2543 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2543 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2543 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2662:13 | 2662 | (append( | ^ ... 2674 | )), | ^ | help: remove these parentheses | 2662 ~ append( 2663 | (append( ... 2673 | string(" / "), 2674 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2675:13 | 2675 | (v177), | ^ ^ | help: remove these parentheses | 2675 - (v177), 2675 + v177, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2663:17 | 2663 | (append( | ^ ... 2672 | )), | ^ | help: remove these parentheses | 2663 ~ append( 2664 | (append( ... 2671 | string("file_system.create_dir"), 2672 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2664:21 | 2664 | (append( | ^ ... 2670 | )), | ^ | help: remove these parentheses | 2664 ~ append( 2665 | (append( ... 2669 | string(" "), 2670 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2665:25 | 2665 | (append( | ^ ... 2668 | )), | ^ | help: remove these parentheses | 2665 ~ append( 2666 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2667 | (toString(v0.l0.get().clone())), 2668 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2666:29 | 2666 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2666 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2666 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2667:29 | 2667 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 2667 - (toString(v0.l0.get().clone())), 2667 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2666:37 | 2666 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2666 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2666 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2666:45 | 2666 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2666 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2666 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2666:74 | 2666 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2666 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2666 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2666:53 | 2666 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2666 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2666 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2786:74 | 2786 | (File_system::method95(v0, v1.clone(), (v2) + 1_i32))(append((v3), (v1))) | ^ ^ | help: remove these parentheses | 2786 - (File_system::method95(v0, v1.clone(), (v2) + 1_i32))(append((v3), (v1))) 2786 + (File_system::method95(v0, v1.clone(), (v2) + 1_i32))(append(v3, (v1))) | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2786:80 | 2786 | (File_system::method95(v0, v1.clone(), (v2) + 1_i32))(append((v3), (v1))) | ^ ^ | help: remove these parentheses | 2786 - (File_system::method95(v0, v1.clone(), (v2) + 1_i32))(append((v3), (v1))) 2786 + (File_system::method95(v0, v1.clone(), (v2) + 1_i32))(append((v3), v1)) | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2800:13 | 2800 | ((File_system::method95(32_i32 - (length(v0.clone())), v3, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 2800 - ((File_system::method95(32_i32 - (length(v0.clone())), v3, 0_i32))(string(""))), 2800 + (File_system::method95(32_i32 - (length(v0.clone())), v3, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2801:13 | 2801 | (v0), | ^ ^ | help: remove these parentheses | 2801 - (v0), 2801 + v0, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2804:13 | 2804 | (append( | ^ ... 2825 | )), | ^ | help: remove these parentheses | 2804 ~ append( 2805 | (append( ... 2824 | string("-"), 2825 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2826:13 | 2826 | (getSlice(v13, Some(20_i32), Some((32_i32) - 1_i32))), | ^ ^ | help: remove these parentheses | 2826 - (getSlice(v13, Some(20_i32), Some((32_i32) - 1_i32))), 2826 + getSlice(v13, Some(20_i32), Some((32_i32) - 1_i32)), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2805:17 | 2805 | (append( | ^ ... 2823 | )), | ^ | help: remove these parentheses | 2805 ~ append( 2806 | (append( ... 2822 | (getSlice(v13.clone(), Some(16_i32), Some((20_i32) - 1_i32))), 2823 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2806:21 | 2806 | (append( | ^ ... 2821 | )), | ^ | help: remove these parentheses | 2806 ~ append( 2807 | (append( ... 2820 | string("-"), 2821 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2822:21 | 2822 | (getSlice(v13.clone(), Some(16_i32), Some((20_i32) - 1_i32))), | ^ ^ | help: remove these parentheses | 2822 - (getSlice(v13.clone(), Some(16_i32), Some((20_i32) - 1_i32))), 2822 + getSlice(v13.clone(), Some(16_i32), Some((20_i32) - 1_i32)), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2807:25 | 2807 | (append( | ^ ... 2819 | )), | ^ | help: remove these parentheses | 2807 ~ append( 2808 | (append( ... 2818 | (getSlice(v13.clone(), Some(12_i32), Some((16_i32) - 1_i32))), 2819 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2808:29 | 2808 | ... (append( | ^ ... 2817 | ... )), | ^ | help: remove these parentheses | 2808 ~ append( 2809 | (append( ... 2816 | string("-"), 2817 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2818:29 | 2818 | ... (getSlice(v13.clone(), Some(12_i32), Some((16_i32) - 1_i32))), | ^ ^ | help: remove these parentheses | 2818 - (getSlice(v13.clone(), Some(12_i32), Some((16_i32) - 1_i32))), 2818 + getSlice(v13.clone(), Some(12_i32), Some((16_i32) - 1_i32)), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2809:33 | 2809 | ... (append( | ^ ... 2815 | ... )), | ^ | help: remove these parentheses | 2809 ~ append( 2810 | (append( ... 2814 | (getSlice(v13.clone(), Some(8_i32), Some((12_i32) - 1_i32))), 2815 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2810:37 | 2810 | ... (append( | ^ ... 2813 | ... )), | ^ | help: remove these parentheses | 2810 ~ append( 2811 | (getSlice(v13.clone(), Some(0_i32), Some((8_i32) - 1_i32))), 2812 | string("-"), 2813 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2814:37 | 2814 | ... (getSlice(v13.clone(), Some(8_i32), Some((12_i32) - 1_i32))), | ^ ^ | help: remove these parentheses | 2814 - (getSlice(v13.clone(), Some(8_i32), Some((12_i32) - 1_i32))), 2814 + getSlice(v13.clone(), Some(8_i32), Some((12_i32) - 1_i32)), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:2811:41 | 2811 | ... (getSlice(v13.clone(), Some(0_i32), Some((8_i32) - 1_i32))), | ^ ^ | help: remove these parentheses | 2811 - (getSlice(v13.clone(), Some(0_i32), Some((8_i32) - 1_i32))), 2811 + getSlice(v13.clone(), Some(0_i32), Some((8_i32) - 1_i32)), | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:3717:31 | 3717 | break '_method126 (if v3(File_system::method79(v4.get().clone(), v0.get().clone())) { | ^ ... 3758 | }); | ^ | help: remove these parentheses | 3717 ~ break '_method126 if v3(File_system::method79(v4.get().clone(), v0.get().clone())) { 3718 | File_system::US17::US17_0(v4.get().clone()) ... 3757 | } 3758 ~ }; | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:3742:25 | 3742 | (concat(new_array(&[ | ^ ... 3749 | ]))), | ^ | help: remove these parentheses | 3742 ~ concat(new_array(&[ 3743 | string("file_system.find_parent / No parent for "), ... 3748 | }, 3749 ~ ])), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:3786:21 | 3786 | (concat(new_array(&[ | ^ ... 3789 | ]))), | ^ | help: remove these parentheses | 3786 ~ concat(new_array(&[ 3787 | string("file_system.find_parent / No parent for "), 3788 | if v2 { string("file") } else { string("dir") }, 3789 ~ ])), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:3870:13 | 3870 | (append( | ^ ... 3882 | )), | ^ | help: remove these parentheses | 3870 ~ append( 3871 | (append( ... 3881 | string(" / "), 3882 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:3883:13 | 3883 | (v177), | ^ ^ | help: remove these parentheses | 3883 - (v177), 3883 + v177, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:3871:17 | 3871 | (append( | ^ ... 3880 | )), | ^ | help: remove these parentheses | 3871 ~ append( 3872 | (append( ... 3879 | string("file_system.get_workspace_root"), 3880 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:3872:21 | 3872 | (append( | ^ ... 3878 | )), | ^ | help: remove these parentheses | 3872 ~ append( 3873 | (append( ... 3877 | string(" "), 3878 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:3873:25 | 3873 | (append( | ^ ... 3876 | )), | ^ | help: remove these parentheses | 3873 ~ append( 3874 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3875 | (toString(v0.l0.get().clone())), 3876 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:3874:29 | 3874 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3874 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3874 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:3875:29 | 3875 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 3875 - (toString(v0.l0.get().clone())), 3875 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:3874:37 | 3874 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3874 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3874 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:3874:45 | 3874 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3874 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3874 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:3874:74 | 3874 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3874 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3874 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:3874:53 | 3874 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3874 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3874 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:94:70 | 94 | (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1))) | ^ ^ | help: remove these parentheses | 94 - (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1))) 94 + (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append(v3_1, (v1_1))) | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:94:78 | 94 | (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1))) | ^ ^ | help: remove these parentheses | 94 - (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1))) 94 + (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), v1_1)) | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:108:13 | 108 | ((Sm::method0((v0_1) - (length(v2_1.clone())), v5_1, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 108 - ((Sm::method0((v0_1) - (length(v2_1.clone())), v5_1, 0_i32))(string(""))), 108 + (Sm::method0((v0_1) - (length(v2_1.clone())), v5_1, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:109:13 | 109 | (v2_1), | ^ ^ | help: remove these parentheses | 109 - (v2_1), 109 + v2_1, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:128:13 | 128 | (v2_1.clone()), | ^ ^ | help: remove these parentheses | 128 - (v2_1.clone()), 128 + v2_1.clone(), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:129:13 | 129 | ((Sm::method0((v0_1) - (length(v2_1)), v5_1, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 129 - ((Sm::method0((v0_1) - (length(v2_1)), v5_1, 0_i32))(string(""))), 129 + (Sm::method0((v0_1) - (length(v2_1)), v5_1, 0_i32))(string("")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:345:17 | 345 | (getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32))), | ^ ^ | help: remove these parentheses | 345 - (getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32))), 345 + getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32)), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:24 | 410 | append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)); | ^ ^ | help: remove these parentheses | 410 - append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)); 410 + append(append((v1_1[v9_1].clone()), (matchValue_1)), (matchValue)); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:72 | 410 | append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)); | ^ ^ | help: remove these parentheses | 410 - append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)); 410 + append((append((v1_1[v9_1].clone()), (matchValue_1))), matchValue); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:32 | 410 | append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)); | ^ ^ | help: remove these parentheses | 410 - append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)); 410 + append((append(v1_1[v9_1].clone(), (matchValue_1))), (matchValue)); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:54 | 410 | append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)); | ^ ^ | help: remove these parentheses | 410 - append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)); 410 + append((append((v1_1[v9_1].clone()), matchValue_1)), (matchValue)); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:759:33 | 759 | let v4: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 759 - let v4: string = append((v0_1.l0.get().clone()), (v1_1)); 759 + let v4: string = append(v0_1.l0.get().clone(), (v1_1)); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:759:58 | 759 | let v4: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 759 - let v4: string = append((v0_1.l0.get().clone()), (v1_1)); 759 + let v4: string = append((v0_1.l0.get().clone()), v1_1); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:858:13 | 858 | (append( | ^ ... 870 | )), | ^ | help: remove these parentheses | 858 ~ append( 859 | (append( ... 869 | string(" / "), 870 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:871:13 | 871 | (v254), | ^ ^ | help: remove these parentheses | 871 - (v254), 871 + v254, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:859:17 | 859 | (append( | ^ ... 868 | )), | ^ | help: remove these parentheses | 859 ~ append( 860 | (append( ... 867 | string("crypto.hash_to_port"), 868 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:860:21 | 860 | (append( | ^ ... 866 | )), | ^ | help: remove these parentheses | 860 ~ append( 861 | (append( ... 865 | string(" "), 866 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:861:25 | 861 | (append( | ^ ... 864 | )), | ^ | help: remove these parentheses | 861 ~ append( 862 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 863 | (toString(v0_1.l0.get().clone())), 864 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:862:29 | 862 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 862 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 862 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:863:29 | 863 | ... (toString(v0_1.l0.get().clone())), | ^ ^ | help: remove these parentheses | 863 - (toString(v0_1.l0.get().clone())), 863 + toString(v0_1.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:862:37 | 862 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 862 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 862 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:862:45 | 862 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 862 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 862 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:862:74 | 862 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 862 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 862 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:862:53 | 862 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 862 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 862 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:690:33 | 690 | let v4: string = append((v0.l0.get().clone()), (v1)); | ^ ^ | help: remove these parentheses | 690 - let v4: string = append((v0.l0.get().clone()), (v1)); 690 + let v4: string = append(v0.l0.get().clone(), (v1)); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:690:56 | 690 | let v4: string = append((v0.l0.get().clone()), (v1)); | ^ ^ | help: remove these parentheses | 690 - let v4: string = append((v0.l0.get().clone()), (v1)); 690 + let v4: string = append((v0.l0.get().clone()), v1); | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:777:13 | 777 | (append( | ^ ... 789 | )), | ^ | help: remove these parentheses | 777 ~ append( 778 | (append( ... 788 | string(" / "), 789 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:790:13 | 790 | (v219), | ^ ^ | help: remove these parentheses | 790 - (v219), 790 + v219, | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:778:17 | 778 | (append( | ^ ... 787 | )), | ^ | help: remove these parentheses | 778 ~ append( 779 | (append( ... 786 | string("common.retry_fn"), 787 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:779:21 | 779 | (append( | ^ ... 785 | )), | ^ | help: remove these parentheses | 779 ~ append( 780 | (append( ... 784 | string(" "), 785 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:780:25 | 780 | (append( | ^ ... 783 | )), | ^ | help: remove these parentheses | 780 ~ append( 781 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 782 | (toString(v0.l0.get().clone())), 783 ~ ), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:781:29 | 781 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 781 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 781 + append((append((append((v6), string(" "))), (v7))), string(" #")), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:782:29 | 782 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 782 - (toString(v0.l0.get().clone())), 782 + toString(v0.l0.get().clone()), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:781:37 | 781 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 781 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 781 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:781:45 | 781 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 781 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 781 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:781:74 | 781 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 781 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 781 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | warning: unnecessary parentheses around function argument --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:781:53 | 781 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 781 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 781 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | warning: unnecessary parentheses around `break` value --> C:\home\git\spiral\deps\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:874:29 | 874 | break '_method8 ({ | ^ ... 911 | }); | ^ | help: remove these parentheses | 874 ~ break '_method8 { 875 | let result: LrcPtr<MutCell<Common::US7>> = refCell(Common::US7::US7_1); ... 910 | } 911 ~ }; | warning: `plot` (lib) generated 379 warnings (run `cargo fix --lib -p plot` to apply 379 suggestions) Finished `release` profile [optimized] target(s) in 28.99s polyglot/scripts/core.ps1/GetFullPath / Path: ../../deps/polyglot/lib/fsharp / Location: C:\home\git\spiral\lib\spiral / ResolvedLocation: C:\home\git\spiral\lib\spiral polyglot/scripts/core.ps1/GetFullPath / FullPath: C:\home\git\spiral\deps\polyglot\lib\fsharp 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "C:\home\git\spiral\lib\spiral/lustre.dib", "--retries", "3"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/spiral/lib/spiral/lustre.dib", "--output-path", "c:/home/git/spiral/lib/spiral/lustre.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/spiral/lib/spiral/lustre.dib" --output-path "c:/home/git/spiral/lib/spiral/lustre.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # lustre > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## lustre > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### attribute > > ── spiral ────────────────────────────────────────────────────────────────────── > nominal attribute t = > `( > backend_switch `(()) `({}) { > Gleam = (fun () => global "import lustre/internals/vdom") : () -> () > } > $'' : $'vdom.Attribute(`t)' > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### element > > ── spiral ────────────────────────────────────────────────────────────────────── > nominal element t = > `( > backend_switch `(()) `({}) { > Gleam = (fun () => global "import lustre/element") : () -> () > } > $'' : $'element.Element(`t)' > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### text > > ── spiral ────────────────────────────────────────────────────────────────────── > inl text forall t. (text : string) : element t = > global "import lustre/element/html" > $'element.text(!text)' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### on_click > > ── spiral ────────────────────────────────────────────────────────────────────── > inl on_click forall t. (msg : t) : attribute t = > global "import lustre/event" > $'event.on_click(!msg)' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### style > > ── spiral ────────────────────────────────────────────────────────────────────── > inl style forall t. (styles : list (string * string)) : attribute t = > global "import lustre/attribute" > inl styles = styles |> listm'.box > $'attribute.style(!styles)' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### div > > ── spiral ────────────────────────────────────────────────────────────────────── > inl div forall t. (attributes : list (attribute t)) (children : list (element > t)) : element t = > global "import lustre/element/html" > inl attributes = attributes |> listm'.box > inl children = children |> listm'.box > $'html.div(!attributes, !children)' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### p > > ── spiral ────────────────────────────────────────────────────────────────────── > inl p forall t. (attributes : list (attribute t)) (children : list (element t)) > : element t = > global "import lustre/element/html" > inl attributes = attributes |> listm'.box > inl children = children |> listm'.box > $'html.p(!attributes, !children)' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### button > > ── spiral ────────────────────────────────────────────────────────────────────── > inl button forall t. (attributes : list (attribute t)) (children : list (element > t)) : element t = > global "import lustre/ui/button" > inl attributes = attributes |> listm'.box > inl children = children |> listm'.box > $'button.button(!attributes, !children)' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### centre > > ── spiral ────────────────────────────────────────────────────────────────────── > inl centre forall t. (attributes : list (attribute t)) (children : element t) : > element t = > global "import lustre/ui/centre" > inl attributes = attributes |> listm'.box > $'centre.centre(!attributes, !children)' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### app > > ── spiral ────────────────────────────────────────────────────────────────────── > nominal app model msg = $'lustre.App(`model, `model, `msg)' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### simple > > ── spiral ────────────────────────────────────────────────────────────────────── > inl simple forall model msg. > (init : model -> model) > (update : model * msg -> model) > (view : model -> element msg) > : app model msg > = > global "import lustre" > $'lustre.simple(!init, fn (a, b) { !update(#(a, b)) }, !view)' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### start > > ── spiral ────────────────────────────────────────────────────────────────────── > inl start id app = > $'let assert Ok(_) = lustre.start(!app, !id, 0)' : () > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## counter > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### model > > ── spiral ────────────────────────────────────────────────────────────────────── > type model = int > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### init > > ── spiral ────────────────────────────────────────────────────────────────────── > inl init initial_count : model = > if initial_count < 0 > then 0 > else initial_count > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### msg > > ── spiral ────────────────────────────────────────────────────────────────────── > union msg = > | Incr > | Decr > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### update > > ── spiral ────────────────────────────────────────────────────────────────────── > inl update n (model, msg) = > match msg with > | Incr => model + n > | Decr => model - n > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### view > > ── spiral ────────────────────────────────────────────────────────────────────── > inl view model = > div [[ > style [[ > "display", "flex" > ]] > ]] [[ > div [[ > style [[ > "display", "flex" > "flex-direction", "column" > ]] > ]] [[ > button [[ > on_click Incr > ]] [[ > text "+" > ]] > p [[ > style [[ > "text-align", "center" > ]] > ]] [[ > model |> sm'.obj_to_string |> text > ]] > button [[ > on_click Decr > ]] [[ > text "-" > ]] > ]] > ]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## tests > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! gleam -t javascript -d lustre=\">=4.6.0\" lustre_ui=\"1.0.0-rc.1\" > gleam_json=\">=2.0.0\" > > simple init (update 1) view > |> start "#app_" > > ── [ 2.36s - return value ] ──────────────────────────────────────────────────── > │ <!doctype html><html lang=en><meta charset=UTF-8><meta > content="width=device-width,initial-scale=1.0" name=viewport><style>@layer > reset{*,:after,:before{box-sizing:border-box;border:0 solid > #e2e8f0}:host,html{-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;t > ab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-ta > p-highlight-color:transparent;line-height:1.5}body{line-height:inherit;margin:0} > hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decorati > on:underline > dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;t > ext-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-featur > e-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono > -Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier > New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline; > font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}ta > ble{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,opt > group,select,textarea{font-feature-settings:inherit;font-variation-settings:inhe > rit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;l > etter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transf > orm:none}button,input:where([type=button]),input:where([type=reset]),input:where > ([type=submit]){-webkit-appearance:button;background-color:#0000;background-imag > e:none}:-moz-focusring{outline:auto}:-moz...};this.#t=b,this.#o=c.handlers}#a(a= > []){for(;this.#r.length>c;){let > b=this.#r.shift(),[c,d]=this.#s(this.#e,b);a=a.concat(d.all.toArray()),this.#e=c > };for(;a.length>c;)a.shift()({dispatch:a=>this.send(new > c8(a)),emit:(a,b)=>this.root.dispatchEvent(new > CustomEvent(a,{detail:b,bubbles:!c,composed:!c})),select:()=>{},root:k});this.#r > .length>c&&this.#a(a)}},cr=cq.start,cs=()=>f.window&&window.document;var > ct=class extends > a6{constructor(a,b,c,d){super(),this.init=a,this.update=b,this.view=c,this.on_at > tribute_change=d}};var cu=class extends > a6{constructor(a){super(),this.selector=a}},cv=class extends a6{};var cG=class > extends a6{},cH=class extends a6{};cM()})()</script><link crossorigin > href=./spiral_af357c5889fb50be5320c0935afb88ca3c018962f0ac49180565a314cd5d9624-2 > cfcb692a30c7217.js rel=modulepreload><link as=fetch crossorigin > href=./spiral_af357c5889fb50be5320c0935afb88ca3c018962f0ac49180565a314cd5d9624-2 > cfcb692a30c7217_bg.wasm rel=preload type=application/wasm></head><body><div > id=app_af357c5889fb50be5320c0935afb88ca3c018962f0ac49180565a314cd5d9624></div><s > cript type=module>import init, * as bindings from > './spiral_af357c5889fb50be5320c0935afb88ca3c018962f0ac49180565a314cd5d9624-2cfcb > 692a30c7217.js'; > │ const wasm = await init({ module_or_path: > './spiral_af357c5889fb50be5320c0935afb88ca3c018962f0ac49180565a314cd5d9624-2cfcb > 692a30c7217_bg.wasm' }); > │ > │ > │ window.wasmBindings = bindings; > │ > │ > │ dispatchEvent(new CustomEvent("TrunkApplicationStarted", > {detail: {wasm}}));</script></body></html> > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! gleam -t javascript -d lustre=\">=4.6.0\" lustre_ui=\"1.0.0-rc.1\" > gleam_json=\">=2.0.0\" > > simple init (update 2) view > |> start "#app_" > > ── [ 1.65s - return value ] ──────────────────────────────────────────────────── > │ <!doctype html><html lang=en><meta charset=UTF-8><meta > content="width=device-width,initial-scale=1.0" name=viewport><style>@layer > reset{*,:after,:before{box-sizing:border-box;border:0 solid > #e2e8f0}:host,html{-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;t > ab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-ta > p-highlight-color:transparent;line-height:1.5}body{line-height:inherit;margin:0} > hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decorati > on:underline > dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;t > ext-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-featur > e-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono > -Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier > New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline; > font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}ta > ble{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,opt > group,select,textarea{font-feature-settings:inherit;font-variation-settings:inhe > rit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;l > etter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transf > orm:none}button,input:where([type=button]),input:where([type=reset]),input:where > ([type=submit]){-webkit-appearance:button;background-color:#0000;background-imag > e:none}:-moz-focusring{outline:auto}:-moz...};this.#t=b,this.#o=c.handlers}#a(a= > []){for(;this.#r.length>c;){let > b=this.#r.shift(),[c,d]=this.#s(this.#e,b);a=a.concat(d.all.toArray()),this.#e=c > };for(;a.length>c;)a.shift()({dispatch:a=>this.send(new > c8(a)),emit:(a,b)=>this.root.dispatchEvent(new > CustomEvent(a,{detail:b,bubbles:!c,composed:!c})),select:()=>{},root:k});this.#r > .length>c&&this.#a(a)}},cr=cq.start,cs=()=>f.window&&window.document;var > ct=class extends > a6{constructor(a,b,c,d){super(),this.init=a,this.update=b,this.view=c,this.on_at > tribute_change=d}};var cu=class extends > a6{constructor(a){super(),this.selector=a}},cv=class extends a6{};var cG=class > extends a6{},cH=class extends a6{};cM()})()</script><link crossorigin > href=./spiral_7693f2fdaa9b647abc2ffa8d280d4211248d047cf30fe6f051a053285637ab4d-c > 61eeb2cbf922198.js rel=modulepreload><link as=fetch crossorigin > href=./spiral_7693f2fdaa9b647abc2ffa8d280d4211248d047cf30fe6f051a053285637ab4d-c > 61eeb2cbf922198_bg.wasm rel=preload type=application/wasm></head><body><div > id=app_7693f2fdaa9b647abc2ffa8d280d4211248d047cf30fe6f051a053285637ab4d></div><s > cript type=module>import init, * as bindings from > './spiral_7693f2fdaa9b647abc2ffa8d280d4211248d047cf30fe6f051a053285637ab4d-c61ee > b2cbf922198.js'; > │ const wasm = await init({ module_or_path: > './spiral_7693f2fdaa9b647abc2ffa8d280d4211248d047cf30fe6f051a053285637ab4d-c61ee > b2cbf922198_bg.wasm' }); > │ > │ > │ window.wasmBindings = bindings; > │ > │ > │ dispatchEvent(new CustomEvent("TrunkApplicationStarted", > {detail: {wasm}}));</script></body></html> > │ 00:00:18 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 14080 } 00:00:18 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/spiral/lib/spiral/lustre.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/spiral/lib/spiral/lustre.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:20 v #5 ! [NbConvertApp] Converting notebook c:/home/git/spiral/lib/spiral/lustre.dib.ipynb to html 00:00:20 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:20 v #7 ! validate(nb) 00:00:20 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:20 v #9 ! return _pygments_highlight( 00:00:20 v #10 ! [NbConvertApp] Writing 393293 bytes to c:\home\git\spiral\lib\spiral\lustre.dib.html 00:00:21 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 850 } 00:00:21 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 850 } 00:00:21 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/spiral/lib/spiral/lustre.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/spiral/lib/spiral/lustre.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:21 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:21 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:21 d #16 spiral.run / dib / { exit_code = 0; result_length = 14989 } 00:00:00 d #1 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/physics.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/physics.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:59 d #2 runtime.execute_with_options_async / { exit_code = 0; output_length = 127996; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/physics.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:59 d #1 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/physics.dib --retries 3 00:00:59 d #3 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/parsing.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/parsing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:02 d #4 runtime.execute_with_options_async / { exit_code = 0; output_length = 71133; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/parsing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:02:02 d #2 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/parsing.dib --retries 3 00:02:02 d #5 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/sm'.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/sm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:03:36 d #6 runtime.execute_with_options_async / { exit_code = 0; output_length = 175062; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/sm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:03:36 d #3 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/sm'.dib --retries 3 00:03:36 d #7 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/rust/rust.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/rust.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:12 d #8 runtime.execute_with_options_async / { exit_code = 0; output_length = 58995; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/rust.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:12 d #4 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/rust.dib --retries 3 00:04:12 d #9 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/rust/testing.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/testing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:02 d #10 runtime.execute_with_options_async / { exit_code = 0; output_length = 18660; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/testing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:02 d #5 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/testing.dib --retries 3 00:06:02 d #11 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/rust/near.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/near.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:21 d #12 runtime.execute_with_options_async / { exit_code = 0; output_length = 14781; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/near.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:21 d #6 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/near.dib --retries 3 00:06:21 d #13 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/rust/near_workspaces.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/near_workspaces.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:40 d #14 runtime.execute_with_options_async / { exit_code = 0; output_length = 17696; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/near_workspaces.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:06:40 d #7 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/rust/near_workspaces.dib --retries 3 00:06:40 d #15 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/testing.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/testing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:07:01 d #16 runtime.execute_with_options_async / { exit_code = 0; output_length = 26983; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/testing.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:07:01 d #8 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/testing.dib --retries 3 00:07:01 d #17 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/guid.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/guid.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:07:18 d #18 runtime.execute_with_options_async / { exit_code = 0; output_length = 9455; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/guid.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:07:18 d #9 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/guid.dib --retries 3 00:07:18 d #19 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/async.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/async.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:07:50 d #20 runtime.execute_with_options_async / { exit_code = 0; output_length = 36390; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/async.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:07:50 d #10 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/async.dib --retries 3 00:07:50 d #21 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/runtime.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/runtime.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:11:21 d #22 runtime.execute_with_options_async / { exit_code = 0; output_length = 100339; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/runtime.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:11:21 d #11 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/runtime.dib --retries 3 00:11:21 d #23 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/trace.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/trace.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:11:44 d #24 runtime.execute_with_options_async / { exit_code = 0; output_length = 23519; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/trace.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:11:44 d #12 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/trace.dib --retries 3 00:11:44 d #25 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/am'.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/am'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:12:36 d #26 runtime.execute_with_options_async / { exit_code = 0; output_length = 49063; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/am'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:12:36 d #13 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/am'.dib --retries 3 00:12:36 d #27 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/crypto.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/crypto.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:15:00 d #28 runtime.execute_with_options_async / { exit_code = 0; output_length = 26283; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/crypto.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:15:00 d #14 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/crypto.dib --retries 3 00:15:00 d #29 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/common.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/common.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:15:27 d #30 runtime.execute_with_options_async / { exit_code = 0; output_length = 17483; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/common.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:15:27 d #15 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/common.dib --retries 3 00:15:27 d #31 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/resultm.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/resultm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:15:54 d #32 runtime.execute_with_options_async / { exit_code = 0; output_length = 23940; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/resultm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:15:54 d #16 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/resultm.dib --retries 3 00:15:54 d #33 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/console.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/console.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:16:06 d #34 runtime.execute_with_options_async / { exit_code = 0; output_length = 6479; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/console.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:16:06 d #17 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/console.dib --retries 3 00:16:06 d #35 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/base.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/base.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:30 d #36 runtime.execute_with_options_async / { exit_code = 0; output_length = 170155; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/base.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:17:30 d #18 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/base.dib --retries 3 00:17:30 d #37 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/date_time.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/date_time.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:38 d #38 runtime.execute_with_options_async / { exit_code = 0; output_length = 62332; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/date_time.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:38 d #19 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/date_time.dib --retries 3 00:18:38 d #39 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/math.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/math.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:57 d #40 runtime.execute_with_options_async / { exit_code = 0; output_length = 12227; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/math.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:18:57 d #20 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/math.dib --retries 3 00:18:57 d #41 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/mapm.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/mapm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:13 d #42 runtime.execute_with_options_async / { exit_code = 0; output_length = 10156; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/mapm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:13 d #21 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/mapm.dib --retries 3 00:19:13 d #43 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/optionm'.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/optionm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:44 d #44 runtime.execute_with_options_async / { exit_code = 0; output_length = 22159; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/optionm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:19:44 d #22 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/optionm'.dib --retries 3 00:19:44 d #45 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/listm'.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/listm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:20:21 d #46 runtime.execute_with_options_async / { exit_code = 0; output_length = 173846; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/listm'.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:20:21 d #23 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/listm'.dib --retries 3 00:20:21 d #47 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/reflection.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/reflection.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:20:50 d #48 runtime.execute_with_options_async / { exit_code = 0; output_length = 23730; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/reflection.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:20:50 d #24 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/reflection.dib --retries 3 00:20:50 d #49 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/iter.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/iter.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:06 d #50 runtime.execute_with_options_async / { exit_code = 0; output_length = 9156; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/iter.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:06 d #25 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/iter.dib --retries 3 00:21:06 d #51 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/wasm.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/wasm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:22 d #52 runtime.execute_with_options_async / { exit_code = 0; output_length = 10792; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/wasm.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:21:22 d #26 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/wasm.dib --retries 3 00:21:22 d #53 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/leptos/leptos.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/leptos/leptos.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:22:26 d #54 runtime.execute_with_options_async / { exit_code = 0; output_length = 94496; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/leptos/leptos.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:22:26 d #27 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/leptos/leptos.dib --retries 3 00:22:26 d #55 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/lustre.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/lustre.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:22:46 d #56 runtime.execute_with_options_async / { exit_code = 0; output_length = 18178; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/lustre.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:22:46 d #28 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/lustre.dib --retries 3 00:22:46 d #57 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/util.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/util.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:23:00 d #58 runtime.execute_with_options_async / { exit_code = 0; output_length = 6858; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/util.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:23:00 d #29 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/util.dib --retries 3 00:23:00 d #59 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/platform.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/platform.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:23:14 d #60 runtime.execute_with_options_async / { exit_code = 0; output_length = 7806; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/platform.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:23:14 d #30 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/platform.dib --retries 3 00:23:14 d #61 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/stream.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/stream.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:23:41 d #62 runtime.execute_with_options_async / { exit_code = 0; output_length = 27698; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/stream.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:23:41 d #31 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/stream.dib --retries 3 00:23:41 d #63 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/threading.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/threading.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:24:10 d #64 runtime.execute_with_options_async / { exit_code = 0; output_length = 28223; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/threading.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:24:10 d #32 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/threading.dib --retries 3 00:24:10 d #65 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/benchmark.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/benchmark.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:24:30 d #66 runtime.execute_with_options_async / { exit_code = 0; output_length = 22116; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/benchmark.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:24:30 d #33 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/benchmark.dib --retries 3 00:24:30 d #67 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/seq.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/seq.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:25:15 d #68 runtime.execute_with_options_async / { exit_code = 0; output_length = 40436; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/seq.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:25:15 d #34 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/seq.dib --retries 3 00:25:15 d #69 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/env.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/env.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:25:33 d #70 runtime.execute_with_options_async / { exit_code = 0; output_length = 10316; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/env.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:25:33 d #35 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/env.dib --retries 3 00:25:33 d #71 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/python.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/python.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:25:45 d #72 runtime.execute_with_options_async / { exit_code = 0; output_length = 5136; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/python.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:25:45 d #36 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/python.dib --retries 3 00:25:45 d #73 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/typescript.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/typescript.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:25:57 d #74 runtime.execute_with_options_async / { exit_code = 0; output_length = 5184; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/typescript.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:25:57 d #37 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/typescript.dib --retries 3 00:25:57 d #75 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/file_system.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/file_system.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:31:52 d #76 runtime.execute_with_options_async / { exit_code = 0; output_length = 99043; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/file_system.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:31:52 d #38 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/file_system.dib --retries 3 00:31:52 d #77 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = US5_0 "dib --path C:\home\git\spiral\lib\spiral/networking.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/networking.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:35:40 d #78 runtime.execute_with_options_async / { exit_code = 0; output_length = 30227; options = { command = ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/networking.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None } } 00:35:39 d #39 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path C:\home\git\spiral\lib\spiral/networking.dib --retries 3 00:00:00 d #1 writeDibCode / output: Spi / path: trace.dib 00:00:00 d #1 writeDibCode / output: Spi / path: testing.dib 00:00:00 d #1 writeDibCode / output: Spi / path: threading.dib 00:00:00 d #1 writeDibCode / output: Spi / path: crypto.dib 00:00:00 d #1 writeDibCode / output: Spi / path: async.dib 00:00:00 d #1 writeDibCode / output: Spi / path: networking.dib 00:00:00 d #1 writeDibCode / output: Spi / path: common.dib 00:00:00 d #1 writeDibCode / output: Spi / path: runtime.dib 00:00:00 d #2 parseDibCode / output: Spi / file: common.dib 00:00:00 d #4 parseDibCode / output: Spi / file: runtime.dib 00:00:00 d #5 parseDibCode / output: Spi / file: testing.dib 00:00:00 d #5 parseDibCode / output: Spi / file: threading.dib 00:00:00 d #7 parseDibCode / output: Spi / file: async.dib 00:00:00 d #2 parseDibCode / output: Spi / file: crypto.dib 00:00:00 d #8 parseDibCode / output: Spi / file: trace.dib 00:00:00 d #9 parseDibCode / output: Spi / file: networking.dib 00:00:00 d #10 writeDibCode / output: Spi / path: console.dib 00:00:00 d #10 writeDibCode / output: Spi / path: iter.dib 00:00:00 d #10 writeDibCode / output: Spi / path: parsing.dib 00:00:00 d #10 writeDibCode / output: Spi / path: base.dib 00:00:00 d #10 writeDibCode / output: Spi / path: resultm.dib 00:00:00 d #10 writeDibCode / output: Spi / path: date_time.dib 00:00:00 d #17 parseDibCode / output: Spi / file: iter.dib 00:00:00 d #18 parseDibCode / output: Spi / file: console.dib 00:00:00 d #19 parseDibCode / output: Spi / file: parsing.dib 00:00:00 d #20 parseDibCode / output: Spi / file: resultm.dib 00:00:00 d #12 writeDibCode / output: Spi / path: env.dib 00:00:00 d #21 parseDibCode / output: Spi / file: date_time.dib 00:00:00 d #22 parseDibCode / output: Spi / file: base.dib 00:00:00 d #23 parseDibCode / output: Spi / file: env.dib 00:00:00 d #24 writeDibCode / output: Spi / path: file_system.dib 00:00:00 d #25 parseDibCode / output: Spi / file: file_system.dib 00:00:00 d #26 writeDibCode / output: Spi / path: guid.dib 00:00:00 d #27 writeDibCode / output: Spi / path: math.dib 00:00:00 d #28 writeDibCode / output: Spi / path: mapm.dib 00:00:00 d #29 parseDibCode / output: Spi / file: guid.dib 00:00:00 d #30 parseDibCode / output: Spi / file: math.dib 00:00:00 d #31 parseDibCode / output: Spi / file: mapm.dib 00:00:00 d #32 writeDibCode / output: Spi / path: optionm'.dib 00:00:00 d #33 writeDibCode / output: Spi / path: am'.dib 00:00:00 d #34 parseDibCode / output: Spi / file: optionm'.dib 00:00:00 d #35 parseDibCode / output: Spi / file: am'.dib 00:00:00 d #36 writeDibCode / output: Spi / path: sm'.dib 00:00:00 d #37 parseDibCode / output: Spi / file: sm'.dib 00:00:00 d #38 writeDibCode / output: Spir / path: sm'.dib 00:00:00 d #39 writeDibCode / output: Spi / path: listm'.dib 00:00:00 d #40 writeDibCode / output: Spi / path: reflection.dib 00:00:00 d #41 parseDibCode / output: Spir / file: sm'.dib 00:00:00 d #42 parseDibCode / output: Spi / file: listm'.dib 00:00:00 d #43 parseDibCode / output: Spi / file: reflection.dib 00:00:00 d #44 writeDibCode / output: Spi / path: python.dib 00:00:00 d #44 writeDibCode / output: Spi / path: typescript.dib 00:00:00 d #46 parseDibCode / output: Spi / file: typescript.dib 00:00:00 d #47 parseDibCode / output: Spi / file: python.dib 00:00:00 d #48 writeDibCode / output: Spi / path: benchmark.dib 00:00:00 d #49 parseDibCode / output: Spi / file: benchmark.dib 00:00:00 d #50 writeDibCode / output: Spi / path: stream.dib 00:00:00 d #51 parseDibCode / output: Spi / file: stream.dib 00:00:00 d #52 writeDibCode / output: Spi / path: seq.dib 00:00:00 d #53 parseDibCode / output: Spi / file: seq.dib 00:00:00 d #54 writeDibCode / output: Spi / path: util.dib 00:00:00 d #55 parseDibCode / output: Spi / file: util.dib 00:00:00 d #56 writeDibCode / output: Spi / path: platform.dib 00:00:00 d #57 writeDibCode / output: Spi / path: rust/rust.dib 00:00:00 d #58 parseDibCode / output: Spi / file: platform.dib 00:00:00 d #59 writeDibCode / output: Spi / path: rust/testing.dib 00:00:00 d #60 parseDibCode / output: Spi / file: rust/rust.dib 00:00:00 d #61 parseDibCode / output: Spi / file: rust/testing.dib 00:00:00 d #62 writeDibCode / output: Spi / path: rust/near.dib 00:00:00 d #63 parseDibCode / output: Spi / file: rust/near.dib 00:00:00 d #64 writeDibCode / output: Spi / path: rust/near_workspaces.dib 00:00:00 d #65 writeDibCode / output: Spi / path: physics.dib 00:00:00 d #66 parseDibCode / output: Spi / file: physics.dib 00:00:00 d #67 parseDibCode / output: Spi / file: rust/near_workspaces.dib 00:00:00 d #68 writeDibCode / output: Spi / path: leptos/leptos.dib 00:00:00 d #69 writeDibCode / output: Spi / path: lustre.dib 00:00:00 d #70 writeDibCode / output: Spi / path: wasm.dib 00:00:00 d #71 parseDibCode / output: Spi / file: leptos/leptos.dib 00:00:00 d #72 parseDibCode / output: Spi / file: lustre.dib 00:00:00 d #73 parseDibCode / output: Spi / file: wasm.dib spiral/lib/spiral/near/wallet/build.ps1 / ScriptDir: C:\home\git\spiral\lib\spiral\near\wallet / ResolvedScriptDir: C:\home\git\spiral\lib\spiral\near\wallet 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "C:\home\git\spiral\lib\spiral\near\wallet/src/near_wallet.dib"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/spiral/lib/spiral/near/wallet/src/near_wallet.dib", "--output-path", "c:/home/git/spiral/lib/spiral/near/wallet/src/near_wallet.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/spiral/lib/spiral/near/wallet/src/near_wallet.dib" --output-path "c:/home/git/spiral/lib/spiral/near/wallet/src/near_wallet.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # near_wallet > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## near_wallet > > ── spiral ────────────────────────────────────────────────────────────────────── > open lustre > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### model > > ── spiral ────────────────────────────────────────────────────────────────────── > type model = int > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### init > > ── spiral ────────────────────────────────────────────────────────────────────── > inl init initial_count : model = > if initial_count < 0 > then 0 > else initial_count > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### msg > > ── spiral ────────────────────────────────────────────────────────────────────── > union msg = > | Incr > | Decr > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### update > > ── spiral ────────────────────────────────────────────────────────────────────── > inl update n (model, msg) = > match msg with > | Incr => model + n > | Decr => model - n > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### view > > ── spiral ────────────────────────────────────────────────────────────────────── > inl view model = > div [[ > style [[ > "display", "flex" > ]] > ]] [[ > div [[ > style [[ > "display", "flex" > "flex-direction", "column" > ]] > ]] [[ > button [[ > on_click Incr > ]] [[ > text "+" > ]] > p [[ > style [[ > "text-align", "center" > ]] > ]] [[ > model |> sm'.obj_to_string |> text > ]] > button [[ > on_click Decr > ]] [[ > text "-" > ]] > ]] > ]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## tests > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! gleam -t javascript -d lustre=\">=4.6.0\" lustre_ui=\"1.0.0-rc.1\" > gleam_json=\">=2.0.0\" > > simple init (update 1) view > |> start "#app_" > > ── [ 4.01s - return value ] ──────────────────────────────────────────────────── > │ <!doctype html><html lang=en><meta charset=UTF-8><meta > content="width=device-width,initial-scale=1.0" name=viewport><style>@layer > reset{*,:after,:before{box-sizing:border-box;border:0 solid > #e2e8f0}:host,html{-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;t > ab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-ta > p-highlight-color:transparent;line-height:1.5}body{line-height:inherit;margin:0} > hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decorati > on:underline > dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;t > ext-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-featur > e-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono > -Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier > New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline; > font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}ta > ble{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,opt > group,select,textarea{font-feature-settings:inherit;font-variation-settings:inhe > rit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;l > etter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transf > orm:none}button,input:where([type=button]),input:where([type=reset]),input:where > ([type=submit]){-webkit-appearance:button;background-color:#0000;background-imag > e:none}:-moz-focusring{outline:auto}:-moz...};this.#t=b,this.#o=c.handlers}#a(a= > []){for(;this.#r.length>c;){let > b=this.#r.shift(),[c,d]=this.#s(this.#e,b);a=a.concat(d.all.toArray()),this.#e=c > };for(;a.length>c;)a.shift()({dispatch:a=>this.send(new > c8(a)),emit:(a,b)=>this.root.dispatchEvent(new > CustomEvent(a,{detail:b,bubbles:!c,composed:!c})),select:()=>{},root:k});this.#r > .length>c&&this.#a(a)}},cr=cq.start,cs=()=>f.window&&window.document;var > ct=class extends > a6{constructor(a,b,c,d){super(),this.init=a,this.update=b,this.view=c,this.on_at > tribute_change=d}};var cu=class extends > a6{constructor(a){super(),this.selector=a}},cv=class extends a6{};var cG=class > extends a6{},cH=class extends a6{};cM()})()</script><link crossorigin > href=./spiral_af357c5889fb50be5320c0935afb88ca3c018962f0ac49180565a314cd5d9624-2 > cfcb692a30c7217.js rel=modulepreload><link as=fetch crossorigin > href=./spiral_af357c5889fb50be5320c0935afb88ca3c018962f0ac49180565a314cd5d9624-2 > cfcb692a30c7217_bg.wasm rel=preload type=application/wasm></head><body><div > id=app_af357c5889fb50be5320c0935afb88ca3c018962f0ac49180565a314cd5d9624></div><s > cript type=module>import init, * as bindings from > './spiral_af357c5889fb50be5320c0935afb88ca3c018962f0ac49180565a314cd5d9624-2cfcb > 692a30c7217.js'; > │ const wasm = await init({ module_or_path: > './spiral_af357c5889fb50be5320c0935afb88ca3c018962f0ac49180565a314cd5d9624-2cfcb > 692a30c7217_bg.wasm' }); > │ > │ > │ window.wasmBindings = bindings; > │ > │ > │ dispatchEvent(new CustomEvent("TrunkApplicationStarted", > {detail: {wasm}}));</script></body></html> > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! gleam -t javascript -d lustre=\">=4.6.0\" lustre_ui=\"1.0.0-rc.1\" > gleam_json=\">=2.0.0\" > > simple init (update 2) view > |> start "#app_" > > ── [ 3.14s - return value ] ──────────────────────────────────────────────────── > │ <!doctype html><html lang=en><meta charset=UTF-8><meta > content="width=device-width,initial-scale=1.0" name=viewport><style>@layer > reset{*,:after,:before{box-sizing:border-box;border:0 solid > #e2e8f0}:host,html{-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;t > ab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-ta > p-highlight-color:transparent;line-height:1.5}body{line-height:inherit;margin:0} > hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){text-decorati > on:underline > dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;t > ext-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-featur > e-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono > -Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier > New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline; > font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}ta > ble{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,opt > group,select,textarea{font-feature-settings:inherit;font-variation-settings:inhe > rit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;l > etter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transf > orm:none}button,input:where([type=button]),input:where([type=reset]),input:where > ([type=submit]){-webkit-appearance:button;background-color:#0000;background-imag > e:none}:-moz-focusring{outline:auto}:-moz...};this.#t=b,this.#o=c.handlers}#a(a= > []){for(;this.#r.length>c;){let > b=this.#r.shift(),[c,d]=this.#s(this.#e,b);a=a.concat(d.all.toArray()),this.#e=c > };for(;a.length>c;)a.shift()({dispatch:a=>this.send(new > c8(a)),emit:(a,b)=>this.root.dispatchEvent(new > CustomEvent(a,{detail:b,bubbles:!c,composed:!c})),select:()=>{},root:k});this.#r > .length>c&&this.#a(a)}},cr=cq.start,cs=()=>f.window&&window.document;var > ct=class extends > a6{constructor(a,b,c,d){super(),this.init=a,this.update=b,this.view=c,this.on_at > tribute_change=d}};var cu=class extends > a6{constructor(a){super(),this.selector=a}},cv=class extends a6{};var cG=class > extends a6{},cH=class extends a6{};cM()})()</script><link crossorigin > href=./spiral_7693f2fdaa9b647abc2ffa8d280d4211248d047cf30fe6f051a053285637ab4d-c > 61eeb2cbf922198.js rel=modulepreload><link as=fetch crossorigin > href=./spiral_7693f2fdaa9b647abc2ffa8d280d4211248d047cf30fe6f051a053285637ab4d-c > 61eeb2cbf922198_bg.wasm rel=preload type=application/wasm></head><body><div > id=app_7693f2fdaa9b647abc2ffa8d280d4211248d047cf30fe6f051a053285637ab4d></div><s > cript type=module>import init, * as bindings from > './spiral_7693f2fdaa9b647abc2ffa8d280d4211248d047cf30fe6f051a053285637ab4d-c61ee > b2cbf922198.js'; > │ const wasm = await init({ module_or_path: > './spiral_7693f2fdaa9b647abc2ffa8d280d4211248d047cf30fe6f051a053285637ab4d-c61ee > b2cbf922198_bg.wasm' }); > │ > │ > │ window.wasmBindings = bindings; > │ > │ > │ dispatchEvent(new CustomEvent("TrunkApplicationStarted", > {detail: {wasm}}));</script></body></html> > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## main > > ── spiral ────────────────────────────────────────────────────────────────────── > ///! _ > > inl main' (n : int) = > simple init (update 1) view > |> start "#app_" > > inl main () = > $'!main' (0)' : () 00:00:18 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 9800 } 00:00:18 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/spiral/lib/spiral/near/wallet/src/near_wallet.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/spiral/lib/spiral/near/wallet/src/near_wallet.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:19 v #5 ! [NbConvertApp] Converting notebook c:/home/git/spiral/lib/spiral/near/wallet/src/near_wallet.dib.ipynb to html 00:00:19 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:19 v #7 ! validate(nb) 00:00:20 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:20 v #9 ! return _pygments_highlight( 00:00:20 v #10 ! [NbConvertApp] Writing 372413 bytes to c:\home\git\spiral\lib\spiral\near\wallet\src\near_wallet.dib.html 00:00:20 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 } 00:00:20 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 } 00:00:20 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/spiral/lib/spiral/near/wallet/src/near_wallet.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/spiral/lib/spiral/near/wallet/src/near_wallet.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:21 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:21 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:21 d #16 spiral.run / dib / { exit_code = 0; result_length = 10751 } 00:00:00 d #1 writeDibCode / output: Spi / path: src/near_wallet.dib 00:00:00 d #2 parseDibCode / output: Spi / file: src/near_wallet.dib bun install v1.2.7 (5c0fa6dc) Resolving dependencies Resolved, downloaded and extracted [4] + npm-check-updates@17.1.16 1 package installed [1500.00ms] spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: C:\home\git\polyglot\target\Builder\near_wallet warning: Unused imported module ┌─ C:\home\git\spiral\lib\spiral\near\wallet\src\near_wallet.gleam:1:1 │ 1 │ import lustre/internals/vdom │ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This imported module is never used Hint: You can safely remove it. warning: Unused variable ┌─ C:\home\git\spiral\lib\spiral\near\wallet\src\near_wallet.gleam:95:78 │ 95 │ pub fn closure0 () -> fn(_) -> fn(Nil) -> Nil { fn(x : #( Int)) { let #( v0) = x │ ^^ This variable is never used Hint: You can ignore it with an underscore: `_v0`. Compiled in 0.24s dist\near_wallet.js 25.9kb ⚡ Done in 35ms 2025-03-29T09:32:25.925920Z INFO 🚀 Starting trunk 0.21.9 2025-03-29T09:32:25.931520Z INFO ⏫ Found an update of trunk: 0.21.9 -> 0.21.12 2025-03-29T09:32:31.682650Z INFO 📦 starting build warning: C:\home\git\spiral\lib\spiral\near\wallet\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: C:\home\git\spiral\workspace\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: C:\home\git\spiral\apps\wasm\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: C:\home\git\spiral\apps\spiral\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. Compiling near_wallet v0.0.1 (C:\home\git\spiral\lib\spiral\near\wallet) Finished `release` profile [optimized] target(s) in 0.33s 2025-03-29T09:32:33.069149Z INFO applying new distribution 2025-03-29T09:32:33.071113Z INFO ✅ success # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\spiral\lib\spiral\near\wallet / $OnError: Continue / $exitcode: -1 / $Error: 'Cannot find path 'C:\home\git\spiral\lib\spiral\near\wallet\public' because it does not exist.' / $ScriptBlock: 'Copy-Item ./public/* ./dist -Recurse -Force' $ playwright test Running 1 test using 1 worker [1/1] [Desktop Chrome] › test.spec.ts:3:5 › test 1 passed (14.9s) To open last HTML report run: npx playwright show-report spiral/lib/spiral/near/wallet/build.ps1 / $targetDir = C:\home\git\polyglot\target\Builder\near_wallet / $projectName: near_wallet / $env:CI:'' 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "build.dib"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/polyglot/scripts/build.dib", "--output-path", "c:/home/git/polyglot/scripts/build.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/polyglot/scripts/build.dib" --output-path "c:/home/git/polyglot/scripts/build.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── pwsh ──────────────────────────────────────────────────────────────────────── > . ./nbs_header.ps1 > . ./core.ps1 > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../apps/builder/build.ps1 } | Invoke-Block > > ── [ 1.59m - stdout ] ────────────────────────────────────────────────────────── > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ # DibParser (Polyglot) > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ #r > │ > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > │ dard2.1/FSharp.Control.AsyncSeq.dll" > │ #r > │ > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > │ 0/System.Reactive.dll" > │ #r > │ > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > │ netstandard2.0/System.Reactive.Linq.dll" > │ #r > │ > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > │ #r > │ > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > │ arsec.dll" > │ #r > │ > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > │ arsecCS.dll" > │ > │ ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ ls ~/.nuget/packages/argu > │ > │ ── [ 445.01ms - stdout ] > ─────────────────────────────────────────────────────── > │ │ > │ │ Directory: > C:\Users\i574n\.nuget\packages\argu > │ │ > │ │ Mode > LastWriteTime > │ Length Name > │ │ ---- > ------------- > │ ------ ---- > │ │ d---- 2023-05-17 3:38 PM│ 6.1.1 > │ │ d---- 2024-03-12 8:22 PM│ 6.1.4 > │ │ d---- 2024-01-29 5:12 PM│ 6.1.5 > │ │ d---- 2024-03-12 8:20 PM│ 6.2.0 > │ │ d---- 2024-02-23 6:50 PM│ 6.2.1 > │ │ d---- 2024-03-12 8:15 PM│ 6.2.2 > │ │ d---- 2024-05-14 8:20 PM│ 6.2.3 > │ │ d---- 2024-06-06 7:37 PM│ 6.2.4 > │ │ d---- 2024-12-08 11:22 AM│ 6.2.5 > │ │ > │ │ > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ #if !INTERACTIVE > │ open Lib > │ #endif > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ open Common > │ open FParsec > │ open SpiralFileSystem.Operators > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## escapeCell (test) > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ let inline escapeCell input = > │ input > │ |> SpiralSm.split "\n" > │ |> Array.map (function > │ | line when line |> SpiralSm.starts_with "\\#!" || > line |> > │ SpiralSm.starts_with "\\#r" -> > │ System.Text.RegularExpressions.Regex.Replace > (line, "^\\\\#", "#") > │ | line -> line > │ ) > │ |> SpiralSm.concat "\n" > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ $"a{nl}\\#!magic{nl}b{nl}" > │ |> escapeCell > │ |> _assertEqual ( > │ $"a{nl}#!magic{nl}b{nl}" > │ ) > │ > │ ── [ 46.99ms - stdout ] > ──────────────────────────────────────────────────────── > │ │ "a > │ │ #!magic > │ │ b > │ │ " > │ │ > │ │ > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## magicMarker > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ let magicMarker : Parser<string, unit> = pstring "#!" > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ "#!magic" > │ |> run magicMarker > │ |> _assertEqual ( > │ Success ("#!", (), Position ("", 2, 1, 3)) > │ ) > │ > │ ── [ 32.19ms - stdout ] > ──────────────────────────────────────────────────────── > │ │ Success: "#!" > │ │ > │ │ > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ "##!magic" > │ |> run magicMarker > │ |> _assertEqual ( > │ Failure ( > │ $"Error in Ln: 1 Col: > 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}", > │ ParserError ( > │ Position ("", 0, 1, 1), > │ (), > │ ErrorMessageList (ExpectedString "#!") > │ ), > │ () > │ ) > │ ) > │ > │ ── [ 29.37ms - stdout ] > ──────────────────────────────────────────────────────── > │ │ Failure: > │ │ Error in Ln: 1 Col: 1 > │ │ ##!magic > │ │ ^ > │ │ Expecting: '#!' > │ │ > │ │ > │ │ > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## magicCommand > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ let magicCommand = > │ magicMarker > │ >>. manyTill anyChar newline > │ |>> (System.String.Concat >> SpiralSm.trim) > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ "#!magic > │ > │ a" > │ |> run magicCommand > │ |> _assertEqual ( > │ Success ("magic", (), Position ("", 8, 2, 1)) > │ ) > │ > │ ── [ 20.48ms - stdout ] > ──────────────────────────────────────────────────────── > │ │ Success: "magic" > │ │ > │ │ > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ " #!magic > │ > │ a" > │ |> run magicCommand > │ |> _assertEqual ( > │ Failure ( > │ $"Error in Ln: 1 Col: 1{nl} > #!magic{nl}^{nl}Expecting: '#!'{nl}", > │ ParserError ( > │ Position ("", 0, 1, 1), > │ (), > │ ErrorMessageList (ExpectedString "#!") > │ ), > │ () > │ ) > │ ) > │ > │ ── [ 19.40ms - stdout ] > ──────────────────────────────────────────────────────── > │ │ Failure: > │ │ Error in Ln: 1 Col: 1 > │ │ #!magic > │ │ ^ > │ │ Expecting: '#!' > │ │ > │ │ > │ │ > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## content > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ let content = > │ (newline >>. magicMarker) <|> (eof >>. preturn "") > │ |> attempt > │ |> lookAhead > │ |> manyTill anyChar > │ |>> (System.String.Concat >> SpiralSm.trim) > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ "#!magic > │ > │ > │ a > │ > │ > │ " > │ |> run content > │ |> _assertEqual ( > │ Success ("#!magic > │ > │ > │ a", (), Position ("", 14, 7, 1)) > │ ) > │ > │ ── [ 18.92ms - stdout ] > ──────────────────────────────────────────────────────── > │ │ Success: "#!magic > │ │ > │ │ > │ │ a" > │ │ > │ │ > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## Output > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ type Output = > │ | Fs > │ | Md > │ | Spi > │ | Spir > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## Magic > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ type Magic = > │ | Fsharp > │ | Markdown > │ | Spiral of Output > │ | Magic of string > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## kernelOutputs > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ let inline kernelOutputs magic = > │ match magic with > │ | Fsharp -> [[ Fs ]] > │ | Markdown -> [[ Md ]] > │ | Spiral output -> [[ output ]] > │ | _ -> [[]] > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## Block > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ type Block = > │ { > │ magic : Magic > │ content : string > │ } > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## block > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ let block = > │ pipe2 > │ magicCommand > │ content > │ (fun magic content -> > │ let magic, content = > │ match magic with > │ | "fsharp" -> Fsharp, content > │ | "markdown" -> Markdown, content > │ | "spiral" -> > │ let output = if content |> > SpiralSm.contains "//// real\n" > │ then Spir else Spi > │ let content = > │ if output = Spi > │ then content > │ else > │ content > │ |> SpiralSm.replace "//// > real\n\n" "" > │ |> SpiralSm.replace "//// real\n" > "" > │ Spiral output, content > │ | magic -> magic |> Magic, content > │ { > │ magic = magic > │ content = content > │ }) > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ "#!magic > │ > │ > │ a > │ > │ > │ " > │ |> run block > │ |> _assertEqual ( > │ Success ( > │ { magic = Magic "magic"; content = "a" }, > │ (), > │ Position ("", 14, 7, 1) > │ ) > │ ) > │ > │ ── [ 47.80ms - stdout ] > ──────────────────────────────────────────────────────── > │ │ Success: { magic = Magic "magic" > │ │ content = "a" } > │ │ > │ │ > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## blocks > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ let blocks = > │ skipMany newline > │ >>. sepEndBy block (skipMany1 newline) > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ > │ "#!magic1 > │ > │ a > │ > │ \#!magic2 > │ > │ b > │ > │ " > │ |> escapeCell > │ |> run blocks > │ |> _assertEqual ( > │ Success ( > │ [[ > │ { magic = Magic "magic1"; content = "a" } > │ { magic = Magic "magic2"; content = "b" } > │ ]], > │ (), > │ Position ("", 26, 9, 1) > │ ) > │ ) > │ > │ ── [ 39.29ms - stdout ] > ──────────────────────────────────────────────────────── > │ │ Success: [{ magic = Magic "magic1" > │ │ content = "a" }; { magic = Magic > "magic2" > │ │ content = "b" }] > │ │ > │ │ > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## formatBlock > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ let inline formatBlock output (block : Block) = > │ match output, block with > │ | output, { magic = Markdown; content = content } -> > │ let markdownComment = > │ match output with > │ | Spi | Spir -> "/// " > │ | Fs -> "/// " > │ | _ -> "" > │ content > │ |> SpiralSm.split "\n" > │ |> Array.map (SpiralSm.trim_end [[||]]) > │ |> Array.filter (SpiralSm.ends_with " (test)" >> not) > │ |> Array.map (function > │ | "" -> markdownComment > │ | line -> > System.Text.RegularExpressions.Regex.Replace (line, > │ "^\\s*", $"$&{markdownComment}") > │ ) > │ |> SpiralSm.concat "\n" > │ | Fs, { magic = Fsharp; content = content } -> > │ let trimmedContent = content |> SpiralSm.trim > │ if trimmedContent |> SpiralSm.contains "//// test\n" > │ || trimmedContent |> SpiralSm.contains "//// > ignore\n" > │ then "" > │ else > │ content > │ |> SpiralSm.split "\n" > │ |> Array.filter (SpiralSm.trim_start [[||]] >> > SpiralSm.starts_with > │ "#r" >> not) > │ |> SpiralSm.concat "\n" > │ | (Spi | Spir), { magic = Spiral output'; content = > content } when output' = > │ output -> > │ let trimmedContent = content |> SpiralSm.trim > │ if trimmedContent |> SpiralSm.contains "//// test\n" > │ || trimmedContent |> SpiralSm.contains "//// > ignore\n" > │ then "" > │ else content > │ | _ -> "" > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ "#!markdown > │ > │ > │ a > │ > │ b > │ > │ c > │ > │ > │ \#!markdown > │ > │ > │ c > │ > │ > │ \#!fsharp > │ > │ > │ let a = 1" > │ |> escapeCell > │ |> run block > │ |> function > │ | Success (block, _, _) -> formatBlock Fs block > │ | Failure (msg, _, _) -> failwith msg > │ |> _assertEqual "/// a > │ /// > │ /// b > │ /// > │ /// c" > │ > │ ── [ 43.20ms - stdout ] > ──────────────────────────────────────────────────────── > │ │ "/// a > │ │ /// > │ │ /// b > │ │ /// > │ │ /// c" > │ │ > │ │ > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## formatBlocks > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ let inline formatBlocks output blocks = > │ blocks > │ |> List.map (fun block -> > │ block, formatBlock output block > │ ) > │ |> List.filter (snd >> (<>) "") > │ |> fun list -> > │ (list, (None, [[]])) > │ ||> List.foldBack (fun (block, content) (lastMagic, > acc) -> > │ let lineBreak = > │ if block.magic = Markdown && lastMagic <> > Some Markdown && > │ lastMagic <> None > │ then "" > │ else "\n" > │ Some block.magic, $"{content}{lineBreak}" :: acc > │ ) > │ |> snd > │ |> SpiralSm.concat "\n" > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ "#!markdown > │ > │ > │ a > │ > │ b > │ > │ > │ \#!markdown > │ > │ > │ c > │ > │ > │ \#!fsharp > │ > │ > │ let a = 1 > │ > │ \#!markdown > │ > │ d (test) > │ > │ \#!fsharp > │ > │ //// test > │ > │ let a = 2 > │ > │ \#!markdown > │ > │ e > │ > │ \#!fsharp > │ > │ let a = 3" > │ |> escapeCell > │ |> run blocks > │ |> function > │ | Success (blocks, _, _) -> formatBlocks Fs blocks > │ | Failure (msg, _, _) -> failwith msg > │ |> _assertEqual "/// a > │ /// > │ /// b > │ > │ /// c > │ let a = 1 > │ > │ /// e > │ let a = 3 > │ " > │ > │ ── [ 60.15ms - stdout ] > ──────────────────────────────────────────────────────── > │ │ "/// a > │ │ /// > │ │ /// b > │ │ > │ │ /// c > │ │ let a = 1 > │ │ > │ │ /// e > │ │ let a = 3 > │ │ " > │ │ > │ │ > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## parse > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ let inline parse output input = > │ match run blocks input with > │ | Success (blocks, _, _) -> > │ let blocks = > │ blocks > │ |> List.filter (fun block -> > │ block.magic |> kernelOutputs |> List.contains > output || > │ block.magic = Markdown > │ ) > │ > │ match blocks with > │ | { magic = Markdown; content = content } :: _ > │ when output = Fs > │ && content |> SpiralSm.starts_with "# " > │ && content |> SpiralSm.ends_with ")" > │ -> > │ let inline indentBlock (block : Block) = > │ { block with > │ content = > │ block.content > │ |> SpiralSm.split "\n" > │ |> Array.fold > │ (fun (lines, isMultiline) line -> > │ let trimmedLine = line |> > SpiralSm.trim > │ if trimmedLine = "" > │ then "" :: lines, isMultiline > │ else > │ let inline > singleQuoteLine () = > │ trimmedLine |> > Seq.sumBy ((=) '"' >> > │ System.Convert.ToInt32) = 1 > │ && trimmedLine |> > SpiralSm.contains > │ @"'""'" |> not > │ && trimmedLine |> > SpiralSm.ends_with "{" > │ |> not > │ && trimmedLine |> > SpiralSm.ends_with > │ "{|" |> not > │ && trimmedLine |> > SpiralSm.starts_with > │ "}" |> not > │ && trimmedLine |> > SpiralSm.starts_with > │ "|}" |> not > │ > │ match isMultiline, > trimmedLine |> > │ SpiralSm.split_string [[| $"{q}{q}{q}" |]] with > │ | false, [[| _; _ |]] -> > │ $" {line}" :: > lines, true > │ > │ | true, [[| _; _ |]] -> > │ line :: lines, false > │ > │ | false, _ when > singleQuoteLine () -> > │ $" {line}" :: > lines, true > │ > │ | false, _ when line |> > SpiralSm.starts_with > │ "#" && block.magic = Fsharp -> > │ line :: lines, false > │ > │ | false, _ -> > │ $" {line}" :: > lines, false > │ > │ | true, _ when > singleQuoteLine () && line |> > │ SpiralSm.starts_with " " -> > │ $" {line}" :: > lines, false > │ > │ | true, _ when > singleQuoteLine () -> > │ line :: lines, false > │ > │ | true, _ -> > │ line :: lines, true > │ ) > │ ([[]], false) > │ |> fst > │ |> List.rev > │ |> SpiralSm.concat "\n" > │ } > │ > │ let moduleName, namespaceName = > │ System.Text.RegularExpressions.Regex.Match > (content, @"# (.*) > │ \((.*)\)$") > │ |> fun m -> m.Groups.[[1]].Value, > m.Groups.[[2]].Value > │ > │ let moduleBlock = > │ { > │ magic = Fsharp > │ content = > │ $"#if !INTERACTIVE > │ namespace {namespaceName} > │ #endif > │ > │ module {moduleName} =" > │ } > │ > │ blocks > │ |> List.indexed > │ |> List.fold > │ (fun blocks (index, block) -> > │ match index with > │ | 0 -> blocks > │ | 1 -> indentBlock block :: moduleBlock > :: blocks > │ | _ -> indentBlock block :: blocks > │ ) > │ [[]] > │ |> List.rev > │ | _ -> blocks > │ |> Result.Ok > │ | Failure (errorMsg, _, _) -> Result.Error errorMsg > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ let example1 = > │ $"""#!meta > │ > │ > {{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name": > │ "fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}} > │ > │ \#!markdown > │ > │ # TestModule (TestNamespace) > │ > │ \#!fsharp > │ > │ \#!import file.dib > │ > │ \#!fsharp > │ > │ \#r "nuget:Expecto" > │ > │ \#!markdown > │ > │ ## ParserLibrary > │ > │ \#!fsharp > │ > │ open System > │ > │ \#!markdown > │ > │ ## x (test) > │ > │ \#!fsharp > │ > │ //// ignore > │ > │ let x = 1 > │ > │ \#!spiral > │ > │ //// test > │ > │ inl x = 1i32 > │ > │ \#!spiral > │ > │ //// real > │ > │ inl x = 2i32 > │ > │ \#!spiral > │ > │ inl x = 3i32 > │ > │ \#!markdown > │ > │ ### TextInput > │ > │ \#!fsharp > │ > │ let str1 = "abc > │ def" > │ > │ let str2 = > │ "abc\ > │ def" > │ > │ let str3 = > │ $"1{{ > │ 1 > │ }}1" > │ > │ let str4 = > │ $"1{{({{| > │ a = 1 > │ |}}).a}}1" > │ > │ let str5 = > │ "abc \ > │ def" > │ > │ let x = > │ match '"' with > │ | '"' -> true > │ | _ -> false > │ > │ let long1 = {q}{q}{q}a{q}{q}{q} > │ > │ let long2 = > │ {q}{q}{q} > │ a > │ {q}{q}{q} > │ > │ \#!fsharp > │ > │ type Position = > │ {{ > │ #if INTERACTIVE > │ line : string > │ #else > │ line : int > │ #endif > │ column : int > │ }}""" > │ |> escapeCell > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ example1 > │ |> parse Fs > │ |> Result.toOption > │ |> Option.get > │ |> (formatBlocks Fs) > │ |> _assertEqual $"""#if !INTERACTIVE > │ namespace TestNamespace > │ #endif > │ > │ module TestModule = > │ > │ /// ## ParserLibrary > │ open System > │ > │ /// ### TextInput > │ let str1 = "abc > │ def" > │ > │ let str2 = > │ "abc\ > │ def" > │ > │ let str3 = > │ $"1{{ > │ 1 > │ }}1" > │ > │ let str4 = > │ $"1{{({{| > │ a = 1 > │ |}}).a}}1" > │ > │ let str5 = > │ "abc \ > │ def" > │ > │ let x = > │ match '"' with > │ | '"' -> true > │ | _ -> false > │ > │ let long1 = {q}{q}{q}a{q}{q}{q} > │ > │ let long2 = > │ {q}{q}{q} > │ a > │ {q}{q}{q} > │ > │ type Position = > │ {{ > │ #if INTERACTIVE > │ line : string > │ #else > │ line : int > │ #endif > │ column : int > │ }} > │ """ > │ > │ ── [ 138.39ms - stdout ] > ─────────────────────────────────────────────────────── > │ │ "#if !INTERACTIVE > │ │ namespace TestNamespace > │ │ #endif > │ │ > │ │ module TestModule = > │ │ > │ │ /// ## ParserLibrary > │ │ open System > │ │ > │ │ /// ### TextInput > │ │ let str1 = "abc > │ │ def" > │ │ > │ │ let str2 = > │ │ "abc\ > │ │ def" > │ │ > │ │ let str3 = > │ │ $"1{ > │ │ 1 > │ │ }1" > │ │ > │ │ let str4 = > │ │ $"1{({| > │ │ a = 1 > │ │ |}).a}1" > │ │ > │ │ let str5 = > │ │ "abc \ > │ │ def" > │ │ > │ │ let x = > │ │ match '"' with > │ │ | '"' -> true > │ │ | _ -> false > │ │ > │ │ let long1 = """a""" > │ │ > │ │ let long2 = > │ │ """ > │ │ a > │ │ """ > │ │ > │ │ type Position = > │ │ { > │ │ #if INTERACTIVE > │ │ line : string > │ │ #else > │ │ line : int > │ │ #endif > │ │ column : int > │ │ } > │ │ " > │ │ > │ │ > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ example1 > │ |> parse Md > │ |> Result.toOption > │ |> Option.get > │ |> (formatBlocks Md) > │ |> _assertEqual "# TestModule (TestNamespace) > │ > │ ## ParserLibrary > │ > │ ### TextInput > │ " > │ > │ ── [ 113.94ms - stdout ] > ─────────────────────────────────────────────────────── > │ │ "# TestModule (TestNamespace) > │ │ > │ │ ## ParserLibrary > │ │ > │ │ ### TextInput > │ │ " > │ │ > │ │ > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ example1 > │ |> parse Spi > │ |> Result.toOption > │ |> Option.get > │ |> (formatBlocks Spi) > │ |> _assertEqual "/// # TestModule (TestNamespace) > │ > │ /// ## ParserLibrary > │ inl x = 3i32 > │ > │ /// ### TextInput > │ " > │ > │ ── [ 135.17ms - stdout ] > ─────────────────────────────────────────────────────── > │ │ "/// # TestModule (TestNamespace) > │ │ > │ │ /// ## ParserLibrary > │ │ inl x = 3i32 > │ │ > │ │ /// ### TextInput > │ │ " > │ │ > │ │ > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ example1 > │ |> parse Spir > │ |> Result.toOption > │ |> Option.get > │ |> (formatBlocks Spir) > │ |> _assertEqual "/// # TestModule (TestNamespace) > │ > │ /// ## ParserLibrary > │ inl x = 2i32 > │ > │ /// ### TextInput > │ " > │ > │ ── [ 116.27ms - stdout ] > ─────────────────────────────────────────────────────── > │ │ "/// # TestModule (TestNamespace) > │ │ > │ │ /// ## ParserLibrary > │ │ inl x = 2i32 > │ │ > │ │ /// ### TextInput > │ │ " > │ │ > │ │ > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## parseDibCode > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ let inline parseDibCode output file = async { > │ trace Debug > │ (fun () -> "parseDibCode") > │ (fun () -> $"output: {output} / file: {file} / > {_locals ()}") > │ let! input = file |> SpiralFileSystem.read_all_text_async > │ match parse output input with > │ | Result.Ok blocks -> return blocks |> formatBlocks > output > │ | Result.Error msg -> return failwith msg > │ } > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## writeDibCode > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ let inline writeDibCode output path = async { > │ trace Debug > │ (fun () -> "writeDibCode") > │ (fun () -> $"output: {output} / path: {path} / > {_locals ()}") > │ let! result = parseDibCode output path > │ let pathDir = path |> System.IO.Path.GetDirectoryName > │ let fileNameWithoutExt = > │ match output, path |> > System.IO.Path.GetFileNameWithoutExtension with > │ | Spir, fileNameWithoutExt -> > $"{fileNameWithoutExt}_real" > │ | _, fileNameWithoutExt -> fileNameWithoutExt > │ let outputPath = pathDir </> > $"{fileNameWithoutExt}.{output |> string |> > │ SpiralSm.to_lower}" > │ do! result |> SpiralFileSystem.write_all_text_async > outputPath > │ } > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## Arguments > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ [[<RequireQualifiedAccess>]] > │ type Arguments = > │ | [[<Argu.ArguAttributes.MainCommand; > Argu.ArguAttributes.Mandatory>]] > │ File of file : string * Output > │ > │ interface Argu.IArgParserTemplate with > │ member s.Usage = > │ match s with > │ | File _ -> nameof File > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ Argu.ArgumentParser.Create<Arguments>().PrintUsage () > │ > │ ── [ 90.17ms - return value ] > ────────────────────────────────────────────────── > │ │ "USAGE: dotnet-repl [--help] <file> > <fs|md|spi|spir> > │ │ > │ │ FILE: > │ │ > │ │ <file> <fs|md|spi|spir> > │ │ File > │ │ > │ │ OPTIONS: > │ │ > │ │ --help display this > list of options. > │ │ " > │ │ > │ > │ ── markdown > ──────────────────────────────────────────────────────────────────── > │ │ ## main > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ let main args = > │ let argsMap = args |> Runtime.parseArgsMap<Arguments> > │ > │ let files = > │ argsMap.[[nameof Arguments.File]] > │ |> List.map (function > │ | Arguments.File (path, output) -> path, output > │ ) > │ > │ files > │ |> List.map (fun (path, output) -> path |> writeDibCode > output) > │ |> Async.Parallel > │ |> Async.Ignore > │ |> Async.runWithTimeout 30000 > │ |> function > │ | Some () -> 0 > │ | None -> 1 > │ > │ ── fsharp > ────────────────────────────────────────────────────────────────────── > │ //// test > │ > │ let args = > │ System.Environment.GetEnvironmentVariable "ARGS" > │ |> SpiralRuntime.split_args > │ |> Result.toArray > │ |> Array.collect id > │ > │ match args with > │ | [[||]] -> 0 > │ | args -> if main args = 0 then 0 else failwith "main failed" > │ > │ ── [ 151.14ms - return value ] > ───────────────────────────────────────────────── > │ │ <div class="dni-plaintext"><pre>0 > │ │ </pre></div><style> > │ │ .dni-code-hint { > │ │ font-style: italic; > │ │ overflow: hidden; > │ │ white-space: nowrap; > │ │ } > │ │ .dni-treeview { > │ │ white-space: nowrap; > │ │ } > │ │ .dni-treeview td { > │ │ vertical-align: top; > │ │ text-align: start; > │ │ } > │ │ details.dni-treeview { > │ │ padding-left: 1em; > │ │ } > │ │ table td { > │ │ text-align: start; > │ │ } > │ │ table tr { > │ │ vertical-align: top; > │ │ margin: 0em 0px; > │ │ } > │ │ table tr td pre > │ │ { > │ │ vertical-align: top !important; > │ │ margin: 0em 0px !important; > │ │ } > │ │ table th { > │ │ text-align: start; > │ │ } > │ │ </style> > │ > │ ── [ 151.96ms - stdout ] > ─────────────────────────────────────────────────────── > │ │ 00:00:04 d #1 writeDibCode / output: > Fs / path: > │ Builder.dib > │ │ 00:00:04 d #2 parseDibCode / output: > Fs / file: > │ Builder.dib > │ │ > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "Builder.dib"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/apps/builder/Builder.dib", "--output-path", > "c:/home/git/polyglot/apps/builder/Builder.dib.ipynb"]; options = { command = > dotnet repl --exit-after-run --run > "c:/home/git/polyglot/apps/builder/Builder.dib" --output-path > "c:/home/git/polyglot/apps/builder/Builder.dib.ipynb"; cancellation_token = > None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), > ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; > working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # Builder (Polyglot) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #r > │ > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > │ > dard2.1/FSharp.Control.AsyncSeq.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > │ > 0/System.Reactive.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > │ > netstandard2.0/System.Reactive.Linq.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #if !INTERACTIVE > │ > open Lib > │ > #endif > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > open Common > │ > open SpiralFileSystem.Operators > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## buildProject > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline buildProject runtime outputDir path = async { > │ > let fullPath = path |> System.IO.Path.GetFullPath > │ > let fileDir = fullPath |> > System.IO.Path.GetDirectoryName > │ > let extension = fullPath |> System.IO.Path.GetExtension > │ > > │ > trace Debug > │ > (fun () -> "buildProject") > │ > (fun () -> $"fullPath: {fullPath} / {_locals ()}") > │ > > │ > match extension with > │ > | ".fsproj" -> () > │ > | _ -> failwith "Invalid project file" > │ > > │ > let runtimes = > │ > runtime > │ > |> Option.map List.singleton > │ > |> Option.defaultValue [[ "linux-x64"; "win-x64" ]] > │ > > │ > let outputDir = outputDir |> Option.defaultValue "dist" > │ > > │ > return! > │ > runtimes > │ > |> List.map (fun runtime -> async { > │ > let command = $@"dotnet publish ""{path}"" > --configuration Release > │ > --output ""{outputDir}"" --runtime {runtime}" > │ > let! exitCode, _result = > │ > SpiralRuntime.execution_options (fun x -> > │ > { x with > │ > l0 = command > │ > l6 = Some fileDir > │ > } > │ > ) > │ > |> SpiralRuntime.execute_with_options_async > │ > return exitCode > │ > }) > │ > |> Async.Sequential > │ > |> Async.map Array.sum > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## persistCodeProject > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline persistCodeProject packages modules name hash > code = async { > │ > trace Debug > │ > (fun () -> "persistCodeProject") > │ > (fun () -> $"packages: {packages} / modules: > {modules} / name: {name} / > │ > hash: {hash} / code.Length: {code |> String.length} / > {_locals ()}") > │ > > │ > let workspaceRoot = SpiralFileSystem.get_workspace_root > () > │ > > │ > let targetDir = > │ > let targetDir = workspaceRoot </> "target/Builder" > </> name > │ > match hash with > │ > | Some hash -> targetDir </> "packages" </> hash > │ > | None -> targetDir > │ > targetDir |> System.IO.Directory.CreateDirectory |> > ignore > │ > > │ > let filePath = targetDir </> $"{name}.fs" |> > System.IO.Path.GetFullPath > │ > do! code |> SpiralFileSystem.write_all_text_exists > filePath > │ > > │ > let modulesCode = > │ > modules > │ > |> List.map (fun path -> $"""<Compile > Include="{workspaceRoot </> path}" > │ > />""") > │ > |> SpiralSm.concat "\n " > │ > > │ > let fsprojPath = targetDir </> $"{name}.fsproj" > │ > let fsprojCode = $"""<Project Sdk="Microsoft.NET.Sdk"> > │ > <PropertyGroup> > │ > <TargetFramework>net9.0</TargetFramework> > │ > <LangVersion>preview</LangVersion> > │ > <RollForward>Major</RollForward> > │ > > <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> > │ > > <ServerGarbageCollection>true</ServerGarbageCollection> > │ > > <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> > │ > <PublishAot>false</PublishAot> > │ > <PublishTrimmed>false</PublishTrimmed> > │ > <PublishSingleFile>true</PublishSingleFile> > │ > <SelfContained>true</SelfContained> > │ > <Version>0.0.1-alpha.1</Version> > │ > <OutputType>Exe</OutputType> > │ > </PropertyGroup> > │ > > │ > <PropertyGroup > Condition="$([[MSBuild]]::IsOSPlatform('FreeBSD'))"> > │ > <DefineConstants>_FREEBSD</DefineConstants> > │ > </PropertyGroup> > │ > > │ > <PropertyGroup > Condition="$([[MSBuild]]::IsOSPlatform('Linux'))"> > │ > <DefineConstants>_LINUX</DefineConstants> > │ > </PropertyGroup> > │ > > │ > <PropertyGroup > Condition="$([[MSBuild]]::IsOSPlatform('OSX'))"> > │ > <DefineConstants>_OSX</DefineConstants> > │ > </PropertyGroup> > │ > > │ > <PropertyGroup > Condition="$([[MSBuild]]::IsOSPlatform('Windows'))"> > │ > <DefineConstants>_WINDOWS</DefineConstants> > │ > </PropertyGroup> > │ > > │ > <ItemGroup> > │ > {modulesCode} > │ > <Compile Include="{filePath}" /> > │ > </ItemGroup> > │ > > │ > <ItemGroup> > │ > <FrameworkReference > Include="Microsoft.AspNetCore.App" /> > │ > </ItemGroup> > │ > > │ > <Import > Project="{workspaceRoot}/.paket/Paket.Restore.targets" /> > │ > </Project> > │ > """ > │ > do! fsprojCode |> > SpiralFileSystem.write_all_text_exists fsprojPath > │ > > │ > let paketReferencesPath = targetDir </> > "paket.references" > │ > let paketReferencesCode = > │ > "FSharp.Core" :: packages > │ > |> SpiralSm.concat "\n" > │ > do! paketReferencesCode |> > SpiralFileSystem.write_all_text_exists > │ > paketReferencesPath > │ > > │ > return fsprojPath > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## buildCode > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline buildCode runtime packages modules outputDir > name code = async { > │ > let! fsprojPath = code |> persistCodeProject packages > modules name None > │ > let! exitCode = fsprojPath |> buildProject runtime > outputDir > │ > if exitCode <> 0 then > │ > let! fsprojText = fsprojPath |> > SpiralFileSystem.read_all_text_async > │ > trace Critical > │ > (fun () -> "buildCode") > │ > (fun () -> $"code: {code |> > SpiralSm.ellipsis_end 400} / fsprojText: > │ > {fsprojText} / {_locals ()}") > │ > return exitCode > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > "1 + 1 |> ignore" > │ > |> buildCode None [[]] [[]] None "test1" > │ > |> Async.runWithTimeout 180000 > │ > |> _assertEqual (Some 0) > │ > > │ > ── [ 11.21s - stdout ] > ───────────────────────────────────────────────────────── > │ > │ 00:00:02 d #1 persistCodeProject / > packages: [] / > │ > modules: [] / name: test1 / hash: / code.Length: 15 > │ > │ 00:00:02 d #2 buildProject / > fullPath: > │ > c:\home\git\polyglot\target\Builder\test1\test1.fsproj > │ > │ 00:00:05 d #1 > runtime.execute_with_options_async / { > │ > file_name = dotnet; arguments = US5_0 > │ > │ "publish > │ > "c:/home/git\polyglot\target/Builder\test1\test1.fsproj" > --configuration Release > │ > --output "dist" --runtime linux-x64"; options = { command = > dotnet publish > │ > "c:/home/git\polyglot\target/Builder\test1\test1.fsproj" > --configuration Release > │ > --output "dist" --runtime linux-x64; cancellation_token = > None; > │ > environment_variables = [||]; on_line = None; stdin = None; > trace = true; > │ > working_directory = Some > "c:\home\git\polyglot\target\Builder\test1" } } > │ > │ 00:00:05 v #2 > Determining > projects to restore... > │ > │ 00:00:06 v #3 > Paket version > │ > 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 > │ > │ 00:00:06 v #4 > The last full > restore is still up to > │ > date. Nothing left to do. > │ > │ 00:00:06 v #5 > Total time taken: > 0 milliseconds > │ > │ 00:00:07 v #6 > Restored > │ > c:\home\git\polyglot\target\Builder\test1\test1.fsproj (in > 929 ms). > │ > │ 00:00:10 v #7 > test1 -> > │ > > c:\home\git\polyglot\target\Builder\test1\bin\Release\net9.0\linux-x64\test1.dll > │ > │ 00:00:11 v #8 > test1 -> > │ > c:\home\git\polyglot\target\Builder\test1\dist\ > │ > │ 00:00:11 d #9 > runtime.execute_with_options_async / { > │ > exit_code = 0; output_length = 429; options = { command = > dotnet publish > │ > "c:/home/git\polyglot\target/Builder\test1\test1.fsproj" > --configuration Release > │ > --output "dist" --runtime linux-x64; cancellation_token = > None; > │ > environment_variables = [||]; on_line = None; stdin = None; > trace = true; > │ > working_directory = Some > "c:\home\git\polyglot\target\Builder\test1" } } > │ > │ 00:00:11 d #10 > runtime.execute_with_options_async / { > │ > file_name = dotnet; arguments = US5_0 > │ > │ "publish > │ > "c:/home/git\polyglot\target/Builder\test1\test1.fsproj" > --configuration Release > │ > --output "dist" --runtime win-x64"; options = { command = > dotnet publish > │ > "c:/home/git\polyglot\target/Builder\test1\test1.fsproj" > --configuration Release > │ > --output "dist" --runtime win-x64; cancellation_token = > None; > │ > environment_variables = [||]; on_line = None; stdin = None; > trace = true; > │ > working_directory = Some > "c:\home\git\polyglot\target\Builder\test1" } } > │ > │ 00:00:12 v #11 > Determining > projects to restore... > │ > │ 00:00:12 v #12 > Paket version > │ > 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 > │ > │ 00:00:12 v #13 > The last full > restore is still up to > │ > date. Nothing left to do. > │ > │ 00:00:12 v #14 > Total time > taken: 0 milliseconds > │ > │ 00:00:13 v #15 > Restored > │ > c:\home\git\polyglot\target\Builder\test1\test1.fsproj (in > 283 ms). > │ > │ 00:00:14 v #16 > test1 -> > │ > > c:\home\git\polyglot\target\Builder\test1\bin\Release\net9.0\win-x64\test1.dll > │ > │ 00:00:15 v #17 > test1 -> > │ > c:\home\git\polyglot\target\Builder\test1\dist\ > │ > │ 00:00:15 d #18 > runtime.execute_with_options_async / { > │ > exit_code = 0; output_length = 427; options = { command = > dotnet publish > │ > "c:/home/git\polyglot\target/Builder\test1\test1.fsproj" > --configuration Release > │ > --output "dist" --runtime win-x64; cancellation_token = > None; > │ > environment_variables = [||]; on_line = None; stdin = None; > trace = true; > │ > working_directory = Some > "c:\home\git\polyglot\target\Builder\test1" } } > │ > │ Some 0 > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > "1 + a |> ignore" > │ > |> buildCode None [[]] [[]] None "test2" > │ > |> Async.runWithTimeout 180000 > │ > |> _assertEqual (Some 2) > │ > > │ > ── [ 7.90s - stdout ] > ────────────────────────────────────────────────────────── > │ > │ 00:00:13 d #3 persistCodeProject / > packages: [] / > │ > modules: [] / name: test2 / hash: / code.Length: 15 > │ > │ 00:00:13 d #4 buildProject / > fullPath: > │ > c:\home\git\polyglot\target\Builder\test2\test2.fsproj > │ > │ 00:00:16 d #19 > runtime.execute_with_options_async / { > │ > file_name = dotnet; arguments = US5_0 > │ > │ "publish > │ > "c:/home/git\polyglot\target/Builder\test2\test2.fsproj" > --configuration Release > │ > --output "dist" --runtime linux-x64"; options = { command = > dotnet publish > │ > "c:/home/git\polyglot\target/Builder\test2\test2.fsproj" > --configuration Release > │ > --output "dist" --runtime linux-x64; cancellation_token = > None; > │ > environment_variables = [||]; on_line = None; stdin = None; > trace = true; > │ > working_directory = Some > "c:\home\git\polyglot\target\Builder\test2" } } > │ > │ 00:00:16 v #20 > Determining > projects to restore... > │ > │ 00:00:17 v #21 > Paket version > │ > 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 > │ > │ 00:00:17 v #22 > The last full > restore is still up to > │ > date. Nothing left to do. > │ > │ 00:00:17 v #23 > Total time > taken: 0 milliseconds > │ > │ 00:00:17 v #24 > Restored > │ > c:\home\git\polyglot\target\Builder\test2\test2.fsproj (in > 272 ms). > │ > │ 00:00:20 v #25 > > │ > c:\home\git\polyglot\target\Builder\test2\test2.fs(1,5): > error FS0039: The value > │ > or constructor 'a' is not defined. > │ > [c:\home\git\polyglot\target\Builder\test2\test2.fsproj] > │ > │ 00:00:20 d #26 > runtime.execute_with_options_async / { > │ > exit_code = 1; output_length = 451; options = { command = > dotnet publish > │ > "c:/home/git\polyglot\target/Builder\test2\test2.fsproj" > --configuration Release > │ > --output "dist" --runtime linux-x64; cancellation_token = > None; > │ > environment_variables = [||]; on_line = None; stdin = None; > trace = true; > │ > working_directory = Some > "c:\home\git\polyglot\target\Builder\test2" } } > │ > │ 00:00:20 d #27 > runtime.execute_with_options_async / { > │ > file_name = dotnet; arguments = US5_0 > │ > │ "publish > │ > "c:/home/git\polyglot\target/Builder\test2\test2.fsproj" > --configuration Release > │ > --output "dist" --runtime win-x64"; options = { command = > dotnet publish > │ > "c:/home/git\polyglot\target/Builder\test2\test2.fsproj" > --configuration Release > │ > --output "dist" --runtime win-x64; cancellation_token = > None; > │ > environment_variables = [||]; on_line = None; stdin = None; > trace = true; > │ > working_directory = Some > "c:\home\git\polyglot\target\Builder\test2" } } > │ > │ 00:00:20 v #28 > Determining > projects to restore... > │ > │ 00:00:21 v #29 > Paket version > │ > 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 > │ > │ 00:00:21 v #30 > The last full > restore is still up to > │ > date. Nothing left to do. > │ > │ 00:00:21 v #31 > Total time > taken: 0 milliseconds > │ > │ 00:00:21 v #32 > Restored > │ > c:\home\git\polyglot\target\Builder\test2\test2.fsproj (in > 270 ms). > │ > │ 00:00:23 v #33 > > │ > c:\home\git\polyglot\target\Builder\test2\test2.fs(1,5): > error FS0039: The value > │ > or constructor 'a' is not defined. > │ > [c:\home\git\polyglot\target\Builder\test2\test2.fsproj] > │ > │ 00:00:23 d #34 > runtime.execute_with_options_async / { > │ > exit_code = 1; output_length = 451; options = { command = > dotnet publish > │ > "c:/home/git\polyglot\target/Builder\test2\test2.fsproj" > --configuration Release > │ > --output "dist" --runtime win-x64; cancellation_token = > None; > │ > environment_variables = [||]; on_line = None; stdin = None; > trace = true; > │ > working_directory = Some > "c:\home\git\polyglot\target\Builder\test2" } } > │ > │ 00:00:21 c #5 buildCode / code: 1 + > a |> ignore / > │ > fsprojText: <Project Sdk="Microsoft.NET.Sdk"> > │ > │ <PropertyGroup> > │ > │ > <TargetFramework>net9.0</TargetFramework> > │ > │ > <LangVersion>preview</LangVersion> > │ > │ <RollForward>Major</RollForward> > │ > │ > │ > <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> > │ > │ > │ > <ServerGarbageCollection>true</ServerGarbageCollection> > │ > │ > │ > > <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> > │ > │ <PublishAot>false</PublishAot> > │ > │ > <PublishTrimmed>false</PublishTrimmed> > │ > │ > <PublishSingleFile>true</PublishSingleFile> > │ > │ > <SelfContained>true</SelfContained> > │ > │ <Version>0.0.1-alpha.1</Version> > │ > │ <OutputType>Exe</OutputType> > │ > │ </PropertyGroup> > │ > │ > │ > │ <PropertyGroup > │ > Condition="$([MSBuild]::IsOSPlatform('FreeBSD'))"> > │ > │ > <DefineConstants>_FREEBSD</DefineConstants> > │ > │ </PropertyGroup> > │ > │ > │ > │ <PropertyGroup > │ > Condition="$([MSBuild]::IsOSPlatform('Linux'))"> > │ > │ > <DefineConstants>_LINUX</DefineConstants> > │ > │ </PropertyGroup> > │ > │ > │ > │ <PropertyGroup > │ > Condition="$([MSBuild]::IsOSPlatform('OSX'))"> > │ > │ > <DefineConstants>_OSX</DefineConstants> > │ > │ </PropertyGroup> > │ > │ > │ > │ <PropertyGroup > │ > Condition="$([MSBuild]::IsOSPlatform('Windows'))"> > │ > │ > <DefineConstants>_WINDOWS</DefineConstants> > │ > │ </PropertyGroup> > │ > │ > │ > │ <ItemGroup> > │ > │ > │ > │ <Compile > │ > > Include="c:\home\git\polyglot\target\Builder\test2\test2.fs" /> > │ > │ </ItemGroup> > │ > │ > │ > │ <ItemGroup> > │ > │ <FrameworkReference > │ > Include="Microsoft.AspNetCore.App" /> > │ > │ </ItemGroup> > │ > │ > │ > │ <Import > │ > Project="c:/home/git\polyglot/.paket/Paket.Restore.targets" > /> > │ > │ </Project> > │ > │ > │ > │ Some 2 > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## readFile > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline readFile path = async { > │ > let! code = path |> > SpiralFileSystem.read_all_text_async > │ > > │ > let code = System.Text.RegularExpressions.Regex.Replace > ( > │ > code, > │ > @"( *)(let\s+main\s+\w+\s*=)", > │ > fun m -> m.Groups.[[1]].Value + > "[[<EntryPoint>]]\n" + > │ > m.Groups.[[1]].Value + m.Groups.[[2]].Value > │ > ) > │ > > │ > let codeTrim = code |> SpiralSm.trim_end [[||]] > │ > return > │ > if codeTrim |> SpiralSm.ends_with "\n()" > │ > then codeTrim |> SpiralSm.slice 0 ((codeTrim |> > String.length) - 3) > │ > else code > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## buildFile > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline buildFile runtime packages modules path = async > { > │ > let fullPath = path |> System.IO.Path.GetFullPath > │ > let dir = fullPath |> System.IO.Path.GetDirectoryName > │ > let name = fullPath |> > System.IO.Path.GetFileNameWithoutExtension > │ > let! code = fullPath |> readFile > │ > return! code |> buildCode runtime packages modules (dir > </> "dist" |> Some) > │ > name > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## persistFile > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline persistFile packages modules path = async { > │ > let fullPath = path |> System.IO.Path.GetFullPath > │ > let name = fullPath |> > System.IO.Path.GetFileNameWithoutExtension > │ > let! code = fullPath |> readFile > │ > return! code |> persistCodeProject packages modules > name None > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## Arguments > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > [[<RequireQualifiedAccess>]] > │ > type Arguments = > │ > | [[<Argu.ArguAttributes.MainCommand; > Argu.ArguAttributes.ExactlyOnce>]] > │ > Path of path : string > │ > | [[<Argu.ArguAttributes.Unique>]] Packages of packages > : string list > │ > | [[<Argu.ArguAttributes.Unique>]] Modules of modules : > string list > │ > | [[<Argu.ArguAttributes.Unique>]] Runtime of runtime : > string > │ > | [[<Argu.ArguAttributes.Unique>]] Persist_Only > │ > > │ > interface Argu.IArgParserTemplate with > │ > member s.Usage = > │ > match s with > │ > | Path _ -> nameof Path > │ > | Packages _ -> nameof Packages > │ > | Modules _ -> nameof Modules > │ > | Runtime _ -> nameof Runtime > │ > | Persist_Only -> nameof Persist_Only > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > Argu.ArgumentParser.Create<Arguments>().PrintUsage () > │ > > │ > ── [ 102.13ms - return value ] > ───────────────────────────────────────────────── > │ > │ "USAGE: dotnet-repl [--help] [--packages > [<packages>...]] > │ > │ [--modules > [<modules>...]] [--runtime > │ > <runtime>] > │ > │ [--persist-only] > <path> > │ > │ > │ > │ PATH: > │ > │ > │ > │ <path> Path > │ > │ > │ > │ OPTIONS: > │ > │ > │ > │ --packages [<packages>...] > │ > │ Packages > │ > │ --modules [<modules>...] > │ > │ Modules > │ > │ --runtime <runtime> Runtime > │ > │ --persist-only Persist_Only > │ > │ --help display this > list of options. > │ > │ " > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## main > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let main args = > │ > let argsMap = args |> Runtime.parseArgsMap<Arguments> > │ > > │ > let path = > │ > match argsMap.[[nameof Arguments.Path]] with > │ > | [[ Arguments.Path path ]] -> Some path > │ > | _ -> None > │ > |> Option.get > │ > > │ > let packages = > │ > match argsMap |> Map.tryFind (nameof > Arguments.Packages) with > │ > | Some [[ Arguments.Packages packages ]] -> > packages > │ > | _ -> [[]] > │ > > │ > let modules = > │ > match argsMap |> Map.tryFind (nameof > Arguments.Modules) with > │ > | Some [[ Arguments.Modules modules ]] -> modules > │ > | _ -> [[]] > │ > > │ > let runtime = > │ > match argsMap |> Map.tryFind (nameof > Arguments.Runtime) with > │ > | Some [[ Arguments.Runtime runtime ]] -> Some > runtime > │ > | _ -> None > │ > > │ > let persistOnly = argsMap |> Map.containsKey (nameof > Arguments.Persist_Only) > │ > > │ > if persistOnly > │ > then path |> persistFile packages modules |> Async.map > (fun _ -> 0) > │ > else path |> buildFile runtime packages modules > │ > |> Async.runWithTimeout (60001 * 60 * 24) > │ > |> function > │ > | Some exitCode -> exitCode > │ > | None -> 1 > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let args = > │ > System.Environment.GetEnvironmentVariable "ARGS" > │ > |> SpiralRuntime.split_args > │ > |> Result.toArray > │ > |> Array.collect id > │ > > │ > match args with > │ > | [[||]] -> 0 > │ > | args -> if main args = 0 then 0 else failwith "main > failed" > │ > > │ > ── [ 30.55s - return value ] > ─────────────────────────────────────────────────── > │ > │ <div class="dni-plaintext"><pre>0 > │ > │ </pre></div><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 30.55s - stdout ] > ───────────────────────────────────────────────────────── > │ > │ 00:00:22 d #6 persistCodeProject / > packages: [Argu; > │ > FSharp.Control.AsyncSeq; System.Reactive.Linq] / modules: > │ > [deps/spiral/lib/spiral/common.fsx; > deps/spiral/lib/spiral/sm.fsx; > │ > deps/spiral/lib/spiral/crypto.fsx; ... ] / name: Builder / > hash: / code.Length: > │ > 8451 > │ > │ 00:00:22 d #7 buildProject / > fullPath: > │ > c:\home\git\polyglot\target\Builder\Builder\Builder.fsproj > │ > │ 00:00:24 d #35 > runtime.execute_with_options_async / { > │ > file_name = dotnet; arguments = US5_0 > │ > │ "publish > │ > > "c:/home/git\polyglot\target/Builder\Builder\Builder.fsproj" --configuration > │ > Release --output "C:\home\git\polyglot\apps\builder\dist" > --runtime linux-x64"; > │ > options = { command = dotnet publish > │ > > "c:/home/git\polyglot\target/Builder\Builder\Builder.fsproj" --configuration > │ > Release --output "C:\home\git\polyglot\apps\builder\dist" > --runtime linux-x64; > │ > cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = > │ > None; trace = true; working_directory = Some > │ > "c:\home\git\polyglot\target\Builder\Builder" } } > │ > │ 00:00:25 v #36 > Determining > projects to restore... > │ > │ 00:00:25 v #37 > Paket version > │ > 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 > │ > │ 00:00:25 v #38 > The last full > restore is still up to > │ > date. Nothing left to do. > │ > │ 00:00:25 v #39 > Total time > taken: 0 milliseconds > │ > │ 00:00:26 v #40 > Restored > │ > c:\home\git\polyglot\target\Builder\Builder\Builder.fsproj > (in 311 ms). > │ > │ 00:00:38 v #41 > Builder -> > │ > > c:\home\git\polyglot\target\Builder\Builder\bin\Release\net9.0\linux-x64\Builder > │ > .dll > │ > │ 00:00:39 v #42 > Builder -> > │ > C:\home\git\polyglot\apps\builder\dist\ > │ > │ 00:00:39 d #43 > runtime.execute_with_options_async / { > │ > exit_code = 0; output_length = 433; options = { command = > dotnet publish > │ > > "c:/home/git\polyglot\target/Builder\Builder\Builder.fsproj" --configuration > │ > Release --output "C:\home\git\polyglot\apps\builder\dist" > --runtime linux-x64; > │ > cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = > │ > None; trace = true; working_directory = Some > │ > "c:\home\git\polyglot\target\Builder\Builder" } } > │ > │ 00:00:39 d #44 > runtime.execute_with_options_async / { > │ > file_name = dotnet; arguments = US5_0 > │ > │ "publish > │ > > "c:/home/git\polyglot\target/Builder\Builder\Builder.fsproj" --configuration > │ > Release --output "C:\home\git\polyglot\apps\builder\dist" > --runtime win-x64"; > │ > options = { command = dotnet publish > │ > > "c:/home/git\polyglot\target/Builder\Builder\Builder.fsproj" --configuration > │ > Release --output "C:\home\git\polyglot\apps\builder\dist" > --runtime win-x64; > │ > cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = > │ > None; trace = true; working_directory = Some > │ > "c:\home\git\polyglot\target\Builder\Builder" } } > │ > │ 00:00:40 v #45 > Determining > projects to restore... > │ > │ 00:00:40 v #46 > Paket version > │ > 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 > │ > │ 00:00:40 v #47 > The last full > restore is still up to > │ > date. Nothing left to do. > │ > │ 00:00:40 v #48 > Total time > taken: 0 milliseconds > │ > │ 00:00:41 v #49 > Restored > │ > c:\home\git\polyglot\target\Builder\Builder\Builder.fsproj > (in 295 ms). > │ > │ 00:00:53 v #50 > Builder -> > │ > > c:\home\git\polyglot\target\Builder\Builder\bin\Release\net9.0\win-x64\Builder.d > │ > ll > │ > │ 00:00:55 v #51 > Builder -> > │ > C:\home\git\polyglot\apps\builder\dist\ > │ > │ 00:00:55 d #52 > runtime.execute_with_options_async / { > │ > exit_code = 0; output_length = 431; options = { command = > dotnet publish > │ > > "c:/home/git\polyglot\target/Builder\Builder\Builder.fsproj" --configuration > │ > Release --output "C:\home\git\polyglot\apps\builder\dist" > --runtime win-x64; > │ > cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = > │ > None; trace = true; working_directory = Some > │ > "c:\home\git\polyglot\target\Builder\Builder" } } > │ > │ > │ 00:01:09 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 28638 } > │ 00:01:09 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/apps/builder/Builder.dib.ipynb", "--to", "html", > "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/apps/builder/Builder.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:01:11 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/apps/builder/Builder.dib.ipynb to html > │ 00:01:11 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:01:11 v #7 ! validate(nb) > │ 00:01:11 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:01:11 v #9 ! return _pygments_highlight( > │ 00:01:12 v #10 ! [NbConvertApp] Writing 337357 bytes to > c:\home\git\polyglot\apps\builder\Builder.dib.html > │ 00:01:12 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 860 } > │ 00:01:12 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 860 } > │ 00:01:12 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/apps/builder/Builder.dib.html'; (Get-Content $path -Raw) > -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } > | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = > 'c:/home/git/polyglot/apps/builder/Builder.dib.html'; (Get-Content $path -Raw) > -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | > Set-Content $path"; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:01:12 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:01:12 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:01:12 d #16 spiral.run / dib / { exit_code = 0; > result_length = 29557 } > │ polyglot/apps/builder/build.ps1 / $env:CI:'' > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../deps/spiral/apps/spiral/build.ps1 -fast 1 -SkipFsx 1 } | Invoke-Block > > ── [ 1.27m - stdout ] ────────────────────────────────────────────────────────── > │ spiral/apps/spiral/build.ps1 / ScriptDir: > C:\home\git\polyglot\deps\spiral\apps\spiral / ResolvedScriptDir: > C:\home\git\spiral\apps\spiral > │ 00:00:00 d #1 persistCodeProject / packages: > [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; > deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: > spiral / hash: / code.Length: 1690956 > │ spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: > C:\home\git\polyglot\target\Builder\spiral > │ polyglot/scripts/core.ps1/ResolveLink #4 / Path: > C:\home\git\polyglot\deps\spiral\deps\polyglot\deps\spiral\lib\spiral/../../deps > /polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: > C:\home\git\polyglot\deps\spiral\deps\polyglot\deps\spiral\lib\spiral\..\..\deps > / End: polyglot > │ spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: > C:\home\git\polyglot\target\Builder\spiral / ProjectName: spiral / Language: rs > / Runtime: / root: C:\home\git\polyglot > │ Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) > │ > │ Thanks to the contributor! @cartermp > │ Stand with Ukraine! https://standwithukraine.com.ua/ > │ > │ Parsing target\Builder\spiral\spiral.fsproj... > │ Project and references (14 source files) parsed in 2633ms > │ > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInt > erop.dll for Fable plugins, skipping this assembly. Original error: The > exception has been reported. This internal exception should now be caught at an > error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The > exception has been reported. This internal exception should now be caught at an > error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. > Original error: The exception has been reported. This internal exception should > now be caught at an error recovery point on the stack. Original message: The > type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You > must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original > error: The exception has been reported. This internal exception should now be > caught at an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The > exception has been reported. This internal exception should now be caught at an > error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: > The exception has been reported. This internal exception should now be caught at > an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original > error: The exception has been reported. This internal exception should now be > caught at an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original > error: The exception has been reported. This internal exception should now be > caught at an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. > Original error: The exception has been reported. This internal exception should > now be caught at an error recovery point on the stack. Original message: The > type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You > must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Components.dll for Fable plugins, skipping this assembly. Original error: > The exception has been reported. This internal exception should now be caught at > an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ > │ Started Fable compilation... > │ > │ Fable compilation finished in 20072ms > │ > │ .\deps\spiral\lib\spiral\sm.fsx(561,0): (561,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\common.fsx(2199,0): (2199,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\crypto.fsx(2426,0): (2426,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\networking.fsx(5050,0): (5050,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\trace.fsx(2232,0): (2232,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\runtime.fsx(7321,0): (7321,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\file_system.fsx(19036,0): (19036,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ spiral/apps/spiral/build.ps1 / path: > C:\home\git\polyglot\target\Builder\spiral/target/rs/spiral.rs > │ spiral/apps/spiral/build.ps1 / $projectName: spiral / > $env:CI:'' > │ warning: C:\home\git\spiral\workspace\Cargo.toml: the > cargo feature `edition2024` has been stabilized in the 1.85 release and is no > longer necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > C:\home\git\spiral\lib\spiral\near\wallet\Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: C:\home\git\spiral\apps\wasm\Cargo.toml: the > cargo feature `edition2024` has been stabilized in the 1.85 release and is no > longer necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: C:\home\git\spiral\apps\spiral\Cargo.toml: the > cargo feature `edition2024` has been stabilized in the 1.85 release and is no > longer necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ Compiling spiral v0.0.1 > (C:\home\git\spiral\apps\spiral) > │ error: failed to remove file > `C:\home\git\spiral\workspace\target\release\spiral.exe` > │ > │ Caused by: > │ Access is denied. (os error 5) > │ > │ # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: > C:\home\git\spiral\apps\spiral / $OnError: Continue / $exitcode: 101 / $Error: > '' / $ScriptBlock: > │ 'cargo build --release' > │ > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../apps/parser/build.ps1 } | Invoke-Block > > ── [ 1.80m - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "DibParser.dib"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/apps/parser/DibParser.dib", "--output-path", > "c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb"]; options = { command = > dotnet repl --exit-after-run --run > "c:/home/git/polyglot/apps/parser/DibParser.dib" --output-path > "c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb"; cancellation_token = > None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), > ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; > working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # DibParser (Polyglot) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #r > │ > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > │ > dard2.1/FSharp.Control.AsyncSeq.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > │ > 0/System.Reactive.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > │ > netstandard2.0/System.Reactive.Linq.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > │ > arsec.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > │ > arsecCS.dll" > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > ls ~/.nuget/packages/argu > │ > > │ > ── [ 448.06ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ > │ > │ Directory: > C:\Users\i574n\.nuget\packages\argu > │ > │ > │ > │ Mode > LastWriteTime > │ > Length Name > │ > │ ---- > ------------- > │ > ------ ---- > │ > │ d---- 2023-05-17 3:38 PM│ > 6.1.1 > │ > │ d---- 2024-03-12 8:22 PM│ > 6.1.4 > │ > │ d---- 2024-01-29 5:12 PM│ > 6.1.5 > │ > │ d---- 2024-03-12 8:20 PM│ > 6.2.0 > │ > │ d---- 2024-02-23 6:50 PM│ > 6.2.1 > │ > │ d---- 2024-03-12 8:15 PM│ > 6.2.2 > │ > │ d---- 2024-05-14 8:20 PM│ > 6.2.3 > │ > │ d---- 2024-06-06 7:37 PM│ > 6.2.4 > │ > │ d---- 2024-12-08 11:22 AM│ > 6.2.5 > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #if !INTERACTIVE > │ > open Lib > │ > #endif > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > open Common > │ > open FParsec > │ > open SpiralFileSystem.Operators > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## escapeCell (test) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let inline escapeCell input = > │ > input > │ > |> SpiralSm.split "\n" > │ > |> Array.map (function > │ > | line when line |> SpiralSm.starts_with "\\#!" || > line |> > │ > SpiralSm.starts_with "\\#r" -> > │ > System.Text.RegularExpressions.Regex.Replace > (line, "^\\\\#", "#") > │ > | line -> line > │ > ) > │ > |> SpiralSm.concat "\n" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > $"a{nl}\\#!magic{nl}b{nl}" > │ > |> escapeCell > │ > |> _assertEqual ( > │ > $"a{nl}#!magic{nl}b{nl}" > │ > ) > │ > > │ > ── [ 47.43ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ "a > │ > │ #!magic > │ > │ b > │ > │ " > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## magicMarker > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let magicMarker : Parser<string, unit> = pstring "#!" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > "#!magic" > │ > |> run magicMarker > │ > |> _assertEqual ( > │ > Success ("#!", (), Position ("", 2, 1, 3)) > │ > ) > │ > > │ > ── [ 53.71ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success: "#!" > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > "##!magic" > │ > |> run magicMarker > │ > |> _assertEqual ( > │ > Failure ( > │ > $"Error in Ln: 1 Col: > 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}", > │ > ParserError ( > │ > Position ("", 0, 1, 1), > │ > (), > │ > ErrorMessageList (ExpectedString "#!") > │ > ), > │ > () > │ > ) > │ > ) > │ > > │ > ── [ 39.20ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Failure: > │ > │ Error in Ln: 1 Col: 1 > │ > │ ##!magic > │ > │ ^ > │ > │ Expecting: '#!' > │ > │ > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## magicCommand > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let magicCommand = > │ > magicMarker > │ > >>. manyTill anyChar newline > │ > |>> (System.String.Concat >> SpiralSm.trim) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > "#!magic > │ > > │ > a" > │ > |> run magicCommand > │ > |> _assertEqual ( > │ > Success ("magic", (), Position ("", 8, 2, 1)) > │ > ) > │ > > │ > ── [ 20.32ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success: "magic" > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > " #!magic > │ > > │ > a" > │ > |> run magicCommand > │ > |> _assertEqual ( > │ > Failure ( > │ > $"Error in Ln: 1 Col: 1{nl} > #!magic{nl}^{nl}Expecting: '#!'{nl}", > │ > ParserError ( > │ > Position ("", 0, 1, 1), > │ > (), > │ > ErrorMessageList (ExpectedString "#!") > │ > ), > │ > () > │ > ) > │ > ) > │ > > │ > ── [ 19.55ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Failure: > │ > │ Error in Ln: 1 Col: 1 > │ > │ #!magic > │ > │ ^ > │ > │ Expecting: '#!' > │ > │ > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## content > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let content = > │ > (newline >>. magicMarker) <|> (eof >>. preturn "") > │ > |> attempt > │ > |> lookAhead > │ > |> manyTill anyChar > │ > |>> (System.String.Concat >> SpiralSm.trim) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > "#!magic > │ > > │ > > │ > a > │ > > │ > > │ > " > │ > |> run content > │ > |> _assertEqual ( > │ > Success ("#!magic > │ > > │ > > │ > a", (), Position ("", 14, 7, 1)) > │ > ) > │ > > │ > ── [ 19.64ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success: "#!magic > │ > │ > │ > │ > │ > │ a" > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## Output > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type Output = > │ > | Fs > │ > | Md > │ > | Spi > │ > | Spir > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## Magic > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type Magic = > │ > | Fsharp > │ > | Markdown > │ > | Spiral of Output > │ > | Magic of string > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## kernelOutputs > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline kernelOutputs magic = > │ > match magic with > │ > | Fsharp -> [[ Fs ]] > │ > | Markdown -> [[ Md ]] > │ > | Spiral output -> [[ output ]] > │ > | _ -> [[]] > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## Block > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type Block = > │ > { > │ > magic : Magic > │ > content : string > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## block > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let block = > │ > pipe2 > │ > magicCommand > │ > content > │ > (fun magic content -> > │ > let magic, content = > │ > match magic with > │ > | "fsharp" -> Fsharp, content > │ > | "markdown" -> Markdown, content > │ > | "spiral" -> > │ > let output = if content |> > SpiralSm.contains "//// real\n" > │ > then Spir else Spi > │ > let content = > │ > if output = Spi > │ > then content > │ > else > │ > content > │ > |> SpiralSm.replace "//// > real\n\n" "" > │ > |> SpiralSm.replace "//// > real\n" "" > │ > Spiral output, content > │ > | magic -> magic |> Magic, content > │ > { > │ > magic = magic > │ > content = content > │ > }) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > "#!magic > │ > > │ > > │ > a > │ > > │ > > │ > " > │ > |> run block > │ > |> _assertEqual ( > │ > Success ( > │ > { magic = Magic "magic"; content = "a" }, > │ > (), > │ > Position ("", 14, 7, 1) > │ > ) > │ > ) > │ > > │ > ── [ 35.80ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success: { magic = Magic "magic" > │ > │ content = "a" } > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## blocks > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let blocks = > │ > skipMany newline > │ > >>. sepEndBy block (skipMany1 newline) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > > │ > "#!magic1 > │ > > │ > a > │ > > │ > \#!magic2 > │ > > │ > b > │ > > │ > " > │ > |> escapeCell > │ > |> run blocks > │ > |> _assertEqual ( > │ > Success ( > │ > [[ > │ > { magic = Magic "magic1"; content = "a" } > │ > { magic = Magic "magic2"; content = "b" } > │ > ]], > │ > (), > │ > Position ("", 26, 9, 1) > │ > ) > │ > ) > │ > > │ > ── [ 39.43ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success: [{ magic = Magic "magic1" > │ > │ content = "a" }; { magic = Magic > "magic2" > │ > │ content = "b" }] > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## formatBlock > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline formatBlock output (block : Block) = > │ > match output, block with > │ > | output, { magic = Markdown; content = content } -> > │ > let markdownComment = > │ > match output with > │ > | Spi | Spir -> "/// " > │ > | Fs -> "/// " > │ > | _ -> "" > │ > content > │ > |> SpiralSm.split "\n" > │ > |> Array.map (SpiralSm.trim_end [[||]]) > │ > |> Array.filter (SpiralSm.ends_with " (test)" >> > not) > │ > |> Array.map (function > │ > | "" -> markdownComment > │ > | line -> > System.Text.RegularExpressions.Regex.Replace (line, > │ > "^\\s*", $"$&{markdownComment}") > │ > ) > │ > |> SpiralSm.concat "\n" > │ > | Fs, { magic = Fsharp; content = content } -> > │ > let trimmedContent = content |> SpiralSm.trim > │ > if trimmedContent |> SpiralSm.contains "//// > test\n" > │ > || trimmedContent |> SpiralSm.contains "//// > ignore\n" > │ > then "" > │ > else > │ > content > │ > |> SpiralSm.split "\n" > │ > |> Array.filter (SpiralSm.trim_start [[||]] >> > SpiralSm.starts_with > │ > "#r" >> not) > │ > |> SpiralSm.concat "\n" > │ > | (Spi | Spir), { magic = Spiral output'; content = > content } when output' = > │ > output -> > │ > let trimmedContent = content |> SpiralSm.trim > │ > if trimmedContent |> SpiralSm.contains "//// > test\n" > │ > || trimmedContent |> SpiralSm.contains "//// > ignore\n" > │ > then "" > │ > else content > │ > | _ -> "" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > "#!markdown > │ > > │ > > │ > a > │ > > │ > b > │ > > │ > c > │ > > │ > > │ > \#!markdown > │ > > │ > > │ > c > │ > > │ > > │ > \#!fsharp > │ > > │ > > │ > let a = 1" > │ > |> escapeCell > │ > |> run block > │ > |> function > │ > | Success (block, _, _) -> formatBlock Fs block > │ > | Failure (msg, _, _) -> failwith msg > │ > |> _assertEqual "/// a > │ > /// > │ > /// b > │ > /// > │ > /// c" > │ > > │ > ── [ 42.16ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ "/// a > │ > │ /// > │ > │ /// b > │ > │ /// > │ > │ /// c" > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## formatBlocks > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline formatBlocks output blocks = > │ > blocks > │ > |> List.map (fun block -> > │ > block, formatBlock output block > │ > ) > │ > |> List.filter (snd >> (<>) "") > │ > |> fun list -> > │ > (list, (None, [[]])) > │ > ||> List.foldBack (fun (block, content) (lastMagic, > acc) -> > │ > let lineBreak = > │ > if block.magic = Markdown && lastMagic <> > Some Markdown && > │ > lastMagic <> None > │ > then "" > │ > else "\n" > │ > Some block.magic, $"{content}{lineBreak}" :: > acc > │ > ) > │ > |> snd > │ > |> SpiralSm.concat "\n" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > "#!markdown > │ > > │ > > │ > a > │ > > │ > b > │ > > │ > > │ > \#!markdown > │ > > │ > > │ > c > │ > > │ > > │ > \#!fsharp > │ > > │ > > │ > let a = 1 > │ > > │ > \#!markdown > │ > > │ > d (test) > │ > > │ > \#!fsharp > │ > > │ > //// test > │ > > │ > let a = 2 > │ > > │ > \#!markdown > │ > > │ > e > │ > > │ > \#!fsharp > │ > > │ > let a = 3" > │ > |> escapeCell > │ > |> run blocks > │ > |> function > │ > | Success (blocks, _, _) -> formatBlocks Fs blocks > │ > | Failure (msg, _, _) -> failwith msg > │ > |> _assertEqual "/// a > │ > /// > │ > /// b > │ > > │ > /// c > │ > let a = 1 > │ > > │ > /// e > │ > let a = 3 > │ > " > │ > > │ > ── [ 59.65ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ "/// a > │ > │ /// > │ > │ /// b > │ > │ > │ > │ /// c > │ > │ let a = 1 > │ > │ > │ > │ /// e > │ > │ let a = 3 > │ > │ " > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## parse > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline parse output input = > │ > match run blocks input with > │ > | Success (blocks, _, _) -> > │ > let blocks = > │ > blocks > │ > |> List.filter (fun block -> > │ > block.magic |> kernelOutputs |> > List.contains output || > │ > block.magic = Markdown > │ > ) > │ > > │ > match blocks with > │ > | { magic = Markdown; content = content } :: _ > │ > when output = Fs > │ > && content |> SpiralSm.starts_with "# " > │ > && content |> SpiralSm.ends_with ")" > │ > -> > │ > let inline indentBlock (block : Block) = > │ > { block with > │ > content = > │ > block.content > │ > |> SpiralSm.split "\n" > │ > |> Array.fold > │ > (fun (lines, isMultiline) line > -> > │ > let trimmedLine = line |> > SpiralSm.trim > │ > if trimmedLine = "" > │ > then "" :: lines, > isMultiline > │ > else > │ > let inline > singleQuoteLine () = > │ > trimmedLine |> > Seq.sumBy ((=) '"' >> > │ > System.Convert.ToInt32) = 1 > │ > && trimmedLine |> > SpiralSm.contains > │ > @"'""'" |> not > │ > && trimmedLine |> > SpiralSm.ends_with "{" > │ > |> not > │ > && trimmedLine |> > SpiralSm.ends_with > │ > "{|" |> not > │ > && trimmedLine |> > SpiralSm.starts_with > │ > "}" |> not > │ > && trimmedLine |> > SpiralSm.starts_with > │ > "|}" |> not > │ > > │ > match isMultiline, > trimmedLine |> > │ > SpiralSm.split_string [[| $"{q}{q}{q}" |]] with > │ > | false, [[| _; _ |]] > -> > │ > $" {line}" :: > lines, true > │ > > │ > | true, [[| _; _ |]] -> > │ > line :: lines, > false > │ > > │ > | false, _ when > singleQuoteLine () -> > │ > $" {line}" :: > lines, true > │ > > │ > | false, _ when line |> > SpiralSm.starts_with > │ > "#" && block.magic = Fsharp -> > │ > line :: lines, > false > │ > > │ > | false, _ -> > │ > $" {line}" :: > lines, false > │ > > │ > | true, _ when > singleQuoteLine () && line |> > │ > SpiralSm.starts_with " " -> > │ > $" {line}" :: > lines, false > │ > > │ > | true, _ when > singleQuoteLine () -> > │ > line :: lines, > false > │ > > │ > | true, _ -> > │ > line :: lines, true > │ > ) > │ > ([[]], false) > │ > |> fst > │ > |> List.rev > │ > |> SpiralSm.concat "\n" > │ > } > │ > > │ > let moduleName, namespaceName = > │ > System.Text.RegularExpressions.Regex.Match > (content, @"# (.*) > │ > \((.*)\)$") > │ > |> fun m -> m.Groups.[[1]].Value, > m.Groups.[[2]].Value > │ > > │ > let moduleBlock = > │ > { > │ > magic = Fsharp > │ > content = > │ > $"#if !INTERACTIVE > │ > namespace {namespaceName} > │ > #endif > │ > > │ > module {moduleName} =" > │ > } > │ > > │ > blocks > │ > |> List.indexed > │ > |> List.fold > │ > (fun blocks (index, block) -> > │ > match index with > │ > | 0 -> blocks > │ > | 1 -> indentBlock block :: moduleBlock > :: blocks > │ > | _ -> indentBlock block :: blocks > │ > ) > │ > [[]] > │ > |> List.rev > │ > | _ -> blocks > │ > |> Result.Ok > │ > | Failure (errorMsg, _, _) -> Result.Error errorMsg > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let example1 = > │ > $"""#!meta > │ > > │ > > {{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name": > │ > "fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}} > │ > > │ > \#!markdown > │ > > │ > # TestModule (TestNamespace) > │ > > │ > \#!fsharp > │ > > │ > \#!import file.dib > │ > > │ > \#!fsharp > │ > > │ > \#r "nuget:Expecto" > │ > > │ > \#!markdown > │ > > │ > ## ParserLibrary > │ > > │ > \#!fsharp > │ > > │ > open System > │ > > │ > \#!markdown > │ > > │ > ## x (test) > │ > > │ > \#!fsharp > │ > > │ > //// ignore > │ > > │ > let x = 1 > │ > > │ > \#!spiral > │ > > │ > //// test > │ > > │ > inl x = 1i32 > │ > > │ > \#!spiral > │ > > │ > //// real > │ > > │ > inl x = 2i32 > │ > > │ > \#!spiral > │ > > │ > inl x = 3i32 > │ > > │ > \#!markdown > │ > > │ > ### TextInput > │ > > │ > \#!fsharp > │ > > │ > let str1 = "abc > │ > def" > │ > > │ > let str2 = > │ > "abc\ > │ > def" > │ > > │ > let str3 = > │ > $"1{{ > │ > 1 > │ > }}1" > │ > > │ > let str4 = > │ > $"1{{({{| > │ > a = 1 > │ > |}}).a}}1" > │ > > │ > let str5 = > │ > "abc \ > │ > def" > │ > > │ > let x = > │ > match '"' with > │ > | '"' -> true > │ > | _ -> false > │ > > │ > let long1 = {q}{q}{q}a{q}{q}{q} > │ > > │ > let long2 = > │ > {q}{q}{q} > │ > a > │ > {q}{q}{q} > │ > > │ > \#!fsharp > │ > > │ > type Position = > │ > {{ > │ > #if INTERACTIVE > │ > line : string > │ > #else > │ > line : int > │ > #endif > │ > column : int > │ > }}""" > │ > |> escapeCell > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > example1 > │ > |> parse Fs > │ > |> Result.toOption > │ > |> Option.get > │ > |> (formatBlocks Fs) > │ > |> _assertEqual $"""#if !INTERACTIVE > │ > namespace TestNamespace > │ > #endif > │ > > │ > module TestModule = > │ > > │ > /// ## ParserLibrary > │ > open System > │ > > │ > /// ### TextInput > │ > let str1 = "abc > │ > def" > │ > > │ > let str2 = > │ > "abc\ > │ > def" > │ > > │ > let str3 = > │ > $"1{{ > │ > 1 > │ > }}1" > │ > > │ > let str4 = > │ > $"1{{({{| > │ > a = 1 > │ > |}}).a}}1" > │ > > │ > let str5 = > │ > "abc \ > │ > def" > │ > > │ > let x = > │ > match '"' with > │ > | '"' -> true > │ > | _ -> false > │ > > │ > let long1 = {q}{q}{q}a{q}{q}{q} > │ > > │ > let long2 = > │ > {q}{q}{q} > │ > a > │ > {q}{q}{q} > │ > > │ > type Position = > │ > {{ > │ > #if INTERACTIVE > │ > line : string > │ > #else > │ > line : int > │ > #endif > │ > column : int > │ > }} > │ > """ > │ > > │ > ── [ 131.35ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ "#if !INTERACTIVE > │ > │ namespace TestNamespace > │ > │ #endif > │ > │ > │ > │ module TestModule = > │ > │ > │ > │ /// ## ParserLibrary > │ > │ open System > │ > │ > │ > │ /// ### TextInput > │ > │ let str1 = "abc > │ > │ def" > │ > │ > │ > │ let str2 = > │ > │ "abc\ > │ > │ def" > │ > │ > │ > │ let str3 = > │ > │ $"1{ > │ > │ 1 > │ > │ }1" > │ > │ > │ > │ let str4 = > │ > │ $"1{({| > │ > │ a = 1 > │ > │ |}).a}1" > │ > │ > │ > │ let str5 = > │ > │ "abc \ > │ > │ def" > │ > │ > │ > │ let x = > │ > │ match '"' with > │ > │ | '"' -> true > │ > │ | _ -> false > │ > │ > │ > │ let long1 = """a""" > │ > │ > │ > │ let long2 = > │ > │ """ > │ > │ a > │ > │ """ > │ > │ > │ > │ type Position = > │ > │ { > │ > │ #if INTERACTIVE > │ > │ line : string > │ > │ #else > │ > │ line : int > │ > │ #endif > │ > │ column : int > │ > │ } > │ > │ " > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > example1 > │ > |> parse Md > │ > |> Result.toOption > │ > |> Option.get > │ > |> (formatBlocks Md) > │ > |> _assertEqual "# TestModule (TestNamespace) > │ > > │ > ## ParserLibrary > │ > > │ > ### TextInput > │ > " > │ > > │ > ── [ 115.10ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ "# TestModule (TestNamespace) > │ > │ > │ > │ ## ParserLibrary > │ > │ > │ > │ ### TextInput > │ > │ " > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > example1 > │ > |> parse Spi > │ > |> Result.toOption > │ > |> Option.get > │ > |> (formatBlocks Spi) > │ > |> _assertEqual "/// # TestModule (TestNamespace) > │ > > │ > /// ## ParserLibrary > │ > inl x = 3i32 > │ > > │ > /// ### TextInput > │ > " > │ > > │ > ── [ 116.99ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ "/// # TestModule (TestNamespace) > │ > │ > │ > │ /// ## ParserLibrary > │ > │ inl x = 3i32 > │ > │ > │ > │ /// ### TextInput > │ > │ " > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > example1 > │ > |> parse Spir > │ > |> Result.toOption > │ > |> Option.get > │ > |> (formatBlocks Spir) > │ > |> _assertEqual "/// # TestModule (TestNamespace) > │ > > │ > /// ## ParserLibrary > │ > inl x = 2i32 > │ > > │ > /// ### TextInput > │ > " > │ > > │ > ── [ 122.83ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ "/// # TestModule (TestNamespace) > │ > │ > │ > │ /// ## ParserLibrary > │ > │ inl x = 2i32 > │ > │ > │ > │ /// ### TextInput > │ > │ " > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## parseDibCode > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline parseDibCode output file = async { > │ > trace Debug > │ > (fun () -> "parseDibCode") > │ > (fun () -> $"output: {output} / file: {file} / > {_locals ()}") > │ > let! input = file |> > SpiralFileSystem.read_all_text_async > │ > match parse output input with > │ > | Result.Ok blocks -> return blocks |> formatBlocks > output > │ > | Result.Error msg -> return failwith msg > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## writeDibCode > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline writeDibCode output path = async { > │ > trace Debug > │ > (fun () -> "writeDibCode") > │ > (fun () -> $"output: {output} / path: {path} / > {_locals ()}") > │ > let! result = parseDibCode output path > │ > let pathDir = path |> System.IO.Path.GetDirectoryName > │ > let fileNameWithoutExt = > │ > match output, path |> > System.IO.Path.GetFileNameWithoutExtension with > │ > | Spir, fileNameWithoutExt -> > $"{fileNameWithoutExt}_real" > │ > | _, fileNameWithoutExt -> fileNameWithoutExt > │ > let outputPath = pathDir </> > $"{fileNameWithoutExt}.{output |> string |> > │ > SpiralSm.to_lower}" > │ > do! result |> SpiralFileSystem.write_all_text_async > outputPath > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## Arguments > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > [[<RequireQualifiedAccess>]] > │ > type Arguments = > │ > | [[<Argu.ArguAttributes.MainCommand; > Argu.ArguAttributes.Mandatory>]] > │ > File of file : string * Output > │ > > │ > interface Argu.IArgParserTemplate with > │ > member s.Usage = > │ > match s with > │ > | File _ -> nameof File > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > Argu.ArgumentParser.Create<Arguments>().PrintUsage () > │ > > │ > ── [ 82.87ms - return value ] > ────────────────────────────────────────────────── > │ > │ "USAGE: dotnet-repl [--help] <file> > <fs|md|spi|spir> > │ > │ > │ > │ FILE: > │ > │ > │ > │ <file> <fs|md|spi|spir> > │ > │ File > │ > │ > │ > │ OPTIONS: > │ > │ > │ > │ --help display this > list of options. > │ > │ " > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## main > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let main args = > │ > let argsMap = args |> Runtime.parseArgsMap<Arguments> > │ > > │ > let files = > │ > argsMap.[[nameof Arguments.File]] > │ > |> List.map (function > │ > | Arguments.File (path, output) -> path, output > │ > ) > │ > > │ > files > │ > |> List.map (fun (path, output) -> path |> writeDibCode > output) > │ > |> Async.Parallel > │ > |> Async.Ignore > │ > |> Async.runWithTimeout 30000 > │ > |> function > │ > | Some () -> 0 > │ > | None -> 1 > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let args = > │ > System.Environment.GetEnvironmentVariable "ARGS" > │ > |> SpiralRuntime.split_args > │ > |> Result.toArray > │ > |> Array.collect id > │ > > │ > match args with > │ > | [[||]] -> 0 > │ > | args -> if main args = 0 then 0 else failwith "main > failed" > │ > > │ > ── [ 150.56ms - return value ] > ───────────────────────────────────────────────── > │ > │ <div class="dni-plaintext"><pre>0 > │ > │ </pre></div><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 151.38ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:00:05 d #1 writeDibCode / > output: Fs / path: > │ > DibParser.dib > │ > │ 00:00:05 d #2 parseDibCode / > output: Fs / file: > │ > DibParser.dib > │ > │ > │ 00:00:22 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 29954 } > │ 00:00:22 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb", "--to", "html", > "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:23 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/apps/parser/DibParser.dib.ipynb to html > │ 00:00:23 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:00:23 v #7 ! validate(nb) > │ 00:00:24 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:00:24 v #9 ! return _pygments_highlight( > │ 00:00:25 v #10 ! [NbConvertApp] Writing 378895 bytes to > c:\home\git\polyglot\apps\parser\DibParser.dib.html > │ 00:00:25 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 862 } > │ 00:00:25 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 862 } > │ 00:00:25 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/apps/parser/DibParser.dib.html'; (Get-Content $path -Raw) > -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } > | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = > 'c:/home/git/polyglot/apps/parser/DibParser.dib.html'; (Get-Content $path -Raw) > -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | > Set-Content $path"; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:25 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:00:25 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:00:25 d #16 spiral.run / dib / { exit_code = 0; > result_length = 30875 } > │ 00:00:00 d #1 persistCodeProject / packages: [Argu; > FParsec; FSharp.Control.AsyncSeq; ... ] / modules: > [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; > deps/spiral/lib/spiral/crypto.fsx; ... ] / name: DibParser / hash: / > code.Length: 10861 > │ 00:00:00 d #2 buildProject / fullPath: > c:\home\git\polyglot\target\Builder\DibParser\DibParser.fsproj > │ 00:00:00 d #1 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "c:/home/git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration > Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime linux-x64"; > options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration > Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime linux-x64; > cancellation_token = None; environment_variables = [||]; on_line = None; stdin = > None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\DibParser" } } > │ 00:00:01 v #2 > Determining projects to restore... > │ 00:00:01 v #3 > Paket version > 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 > │ 00:00:01 v #4 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:01 v #5 > Total time taken: 0 milliseconds > │ 00:00:02 v #6 > Restored > c:\home\git\polyglot\target\Builder\DibParser\DibParser.fsproj (in 297 ms). > │ 00:00:15 v #7 > DibParser -> > c:\home\git\polyglot\target\Builder\DibParser\bin\Release\net9.0\linux-x64\DibPa > rser.dll > │ 00:00:16 v #8 > DibParser -> > C:\home\git\polyglot\apps\parser\dist\ > │ 00:00:16 d #9 runtime.execute_with_options_async / { > exit_code = 0; output_length = 444; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration > Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime linux-x64; > cancellation_token = None; environment_variables = [||]; on_line = None; stdin = > None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\DibParser" } } > │ 00:00:16 d #10 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "c:/home/git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration > Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime win-x64"; > options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration > Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime win-x64; > cancellation_token = None; environment_variables = [||]; on_line = None; stdin = > None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\DibParser" } } > │ 00:00:17 v #11 > Determining projects to restore... > │ 00:00:17 v #12 > Paket version > 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 > │ 00:00:17 v #13 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:17 v #14 > Total time taken: 0 milliseconds > │ 00:00:18 v #15 > Restored > c:\home\git\polyglot\target\Builder\DibParser\DibParser.fsproj (in 296 ms). > │ 00:00:30 v #16 > DibParser -> > c:\home\git\polyglot\target\Builder\DibParser\bin\Release\net9.0\win-x64\DibPars > er.dll > │ 00:00:32 v #17 > DibParser -> > C:\home\git\polyglot\apps\parser\dist\ > │ 00:00:32 d #18 runtime.execute_with_options_async / { > exit_code = 0; output_length = 442; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\DibParser\DibParser.fsproj" --configuration > Release --output "C:\home\git\polyglot\apps\parser\dist" --runtime win-x64; > cancellation_token = None; environment_variables = [||]; on_line = None; stdin = > None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\DibParser" } } > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "JsonParser.dib"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/apps/parser/JsonParser.dib", "--output-path", > "c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb"]; options = { command = > dotnet repl --exit-after-run --run > "c:/home/git/polyglot/apps/parser/JsonParser.dib" --output-path > "c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb"; cancellation_token = > None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), > ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; > working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # JsonParser (Polyglot) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > open Common > │ > open Parser > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## JsonParser > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > (* > │ > // -------------------------------- > │ > JSON spec from http://www.json.org/ > │ > // -------------------------------- > │ > > │ > The JSON spec is available at > [[json.org]](http://www.json.org/). I'll paraphase > │ > it here: > │ > > │ > * A `value` can be a `string` or a `number` or a `bool` or > `null` or an `object` > │ > or an `array`. > │ > * These structures can be nested. > │ > * A `string` is a sequence of zero or more Unicode > characters, wrapped in double > │ > quotes, using backslash escapes. > │ > * A `number` is very much like a C or Java number, except > that the octal and > │ > hexadecimal formats are not used. > │ > * A `boolean` is the literal `true` or `false` > │ > * A `null` is the literal `null` > │ > * An `object` is an unordered set of name/value pairs. > │ > * An object begins with { (left brace) and ends with } > (right brace). > │ > * Each name is followed by : (colon) and the name/value > pairs are separated by > │ > , (comma). > │ > * An `array` is an ordered collection of values. > │ > * An array begins with [[ (left bracket) and ends with ]] > (right bracket). > │ > * Values are separated by , (comma). > │ > * Whitespace can be inserted between any pair of tokens. > │ > *) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let inline parserEqual (expected : ParseResult<'a>) (actual > : ParseResult<'a * > │ > Input>) = > │ > match actual, expected with > │ > | Success (_actual, _), Success _expected -> > │ > printResult actual > │ > _actual |> _assertEqual _expected > │ > | Failure (l1, e1, p1), Failure (l2, e2, p2) when l1 = > l2 && e1 = e2 && p1 = > │ > p2 -> > │ > printResult actual > │ > | _ -> > │ > printfn $"Actual: {actual}" > │ > printfn $"Expected: {expected}" > │ > failwith "Parse failed" > │ > actual > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### JValue > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type JValue = > │ > | JString of string > │ > | JNumber of float > │ > | JBool of bool > │ > | JNull > │ > | JObject of Map<string, JValue> > │ > | JArray of JValue list > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let jValue, jValueRef = createParserForwardedToRef<JValue> > () > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### jNull > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let jNull = > │ > pstring "null" > │ > >>% JNull > │ > <?> "null" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > jValueRef <| > │ > choice > │ > [[ > │ > jNull > │ > ]] > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jValue "null" > │ > |> parserEqual (Success JNull) > │ > > │ > ── [ 179.78ms - return value ] > ───────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JNull, { lines = > [|"null"|]<br /> > │ > position = { line = 0<br /> > column = 4 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JNull, { lines = > [|"null"|]<br /> > │ > position = { line = 0<br /> column = 4 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > > class="dni-code-hint"><code>JNull</code></span></summary><div><table><thead><tr> > │ > > </tr></thead><tbody></tbody></table></div></details></td></tr><tr><td>Item2</td> > │ > <td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"null"|]<br /> position = { line = > 0<br /> > │ > column = 4 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ null > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 4 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>4 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 190.78ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ JNull > │ > │ JNull > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNull "nulp" > │ > |> parserEqual ( > │ > Failure ( > │ > "null", > │ > "Unexpected 'p'", > │ > { currentLine = "nulp"; line = 0; column = 3 } > │ > ) > │ > ) > │ > > │ > ── [ 45.08ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Failure ("null", > "Unexpected > │ > 'p'", { currentLine = "nulp"<br /> > │ > line = 0<br /> column = > 3 > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div class="dni-plaintext"><pre>"null" > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><div > │ > class="dni-plaintext"><pre>"Unexpected > 'p'" > │ > │ > </pre></div></td></tr><tr><td>Item3</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ currentLine = > │ > "nulp"<br /> line = 0<br /> column = 3 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > │ > entLine</td><td><div > class="dni-plaintext"><pre>"nulp" > │ > │ > </pre></div></td></tr><tr><td>line</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>3 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > </div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 46.51ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Line:0 Col:3 Error parsing null > │ > │ nulp > │ > │ ^Unexpected 'p' > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### jBool > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let jBool = > │ > let jtrue = > │ > pstring "true" > │ > >>% JBool true > │ > let jfalse = > │ > pstring "false" > │ > >>% JBool false > │ > > │ > jtrue <|> jfalse > │ > <?> "bool" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > jValueRef <| > │ > choice > │ > [[ > │ > jNull > │ > jBool > │ > ]] > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jBool "true" > │ > |> parserEqual (Success (JBool true)) > │ > > │ > ── [ 43.95ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JBool true, { lines = > │ > [|"true"|]<br /> position = > { line = 0<br /> > │ > column = 4 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JBool true, { lines = > [|"true"|]<br /> > │ > position = { line = 0<br /> column = 4 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JBool > │ > > true</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I > │ > tem</td><td><div class="dni-plaintext"><pre>true > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"true"|]<br /> position = { line = > 0<br /> > │ > column = 4 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ true > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 4 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>4 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 45.74ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JBool true > │ > │ JBool true > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jBool "false" > │ > |> parserEqual (Success (JBool false)) > │ > > │ > ── [ 36.45ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JBool false, { lines =│ > [|"false"|]<br /> position > = { line = 0<br /> > │ > column = 5 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JBool false, { lines = > [|"false"|]<br /> > │ > position = { line = 0<br /> column = 5 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JBool > │ > > false</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > │ > Item</td><td><div class="dni-plaintext"><pre>false > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"false"|]<br /> position = { line = > 0<br /> > │ > column = 5 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ false > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 5 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>5 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 38.41ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JBool false > │ > │ JBool false > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jBool "truX" > │ > |> parserEqual ( > │ > Failure ( > │ > "bool", > │ > "Unexpected 't'", > │ > { currentLine = "truX"; line = 0; column = 0 } > │ > ) > │ > ) > │ > > │ > ── [ 35.80ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Failure ("bool", > "Unexpected > │ > 't'", { currentLine = "truX"<br /> > │ > line = 0<br /> column = > 0 > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div class="dni-plaintext"><pre>"bool" > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><div > │ > class="dni-plaintext"><pre>"Unexpected > 't'" > │ > │ > </pre></div></td></tr><tr><td>Item3</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ currentLine = > │ > "truX"<br /> line = 0<br /> column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > │ > entLine</td><td><div > class="dni-plaintext"><pre>"truX" > │ > │ > </pre></div></td></tr><tr><td>line</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > </div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 37.23ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Line:0 Col:0 Error parsing bool > │ > │ truX > │ > │ ^Unexpected 't' > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### jUnescapedChar > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let jUnescapedChar = > │ > satisfy (fun ch -> ch <> '\\' && ch <> '\"') "char" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jUnescapedChar "a" > │ > |> parserEqual (Success 'a') > │ > > │ > ── [ 49.67ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success ('a', { lines = > [|"a"|]<br > │ > /> position = { line = 0<br /> > column > │ > = 1 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(a, { lines = > [|"a"|]<br /> position = { > │ > line = 0<br /> column = 1 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div class="dni-plaintext"><pre>'a' > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ lines = > │ > [|"a"|]<br /> position = { line = 0<br /> > column = 1 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ a > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 1 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>1 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 51.37ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ 'a' > │ > │ 'a' > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jUnescapedChar "\\" > │ > |> parserEqual ( > │ > Failure ( > │ > "char", > │ > "Unexpected '\\'", > │ > { currentLine = "\\"; line = 0; column = 0 } > │ > ) > │ > ) > │ > > │ > ── [ 36.89ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Failure ("char", > "Unexpected > │ > '\'", { currentLine = "\"<br /> > │ > line = 0<br /> column = > 0 > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div class="dni-plaintext"><pre>"char" > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><div > │ > class="dni-plaintext"><pre>"Unexpected > '\'" > │ > │ > </pre></div></td></tr><tr><td>Item3</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ currentLine = > │ > "\"<br /> line = 0<br /> column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > │ > entLine</td><td><div > class="dni-plaintext"><pre>"\" > │ > │ > </pre></div></td></tr><tr><td>line</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > </div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 38.32ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Line:0 Col:0 Error parsing char > │ > │ \ > │ > │ ^Unexpected '\' > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### jEscapedChar > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let jEscapedChar = > │ > [[ > │ > ("\\\"",'\"') > │ > ("\\\\",'\\') > │ > ("\\/",'/') > │ > ("\\b",'\b') > │ > ("\\f",'\f') > │ > ("\\n",'\n') > │ > ("\\r",'\r') > │ > ("\\t",'\t') > │ > ]] > │ > |> List.map (fun (toMatch, result) -> > │ > pstring toMatch >>% result > │ > ) > │ > |> choice > │ > <?> "escaped char" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jEscapedChar "\\\\" > │ > |> parserEqual (Success '\\') > │ > > │ > ── [ 35.67ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success ('\\', { lines > = > │ > [|"\\"|]<br /> position = { line > = 0<br /> > │ > column = 2 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(\, { lines = > [|"\\"|]<br /> position = { > │ > line = 0<br /> column = 2 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div class="dni-plaintext"><pre>'\\' > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ lines = > │ > [|"\\"|]<br /> position = { line = 0<br /> > column = 2 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ \\ > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 2 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>2 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 37.99ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ '\\' > │ > │ '\\' > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jEscapedChar "\\t" > │ > |> parserEqual (Success '\t') > │ > > │ > ── [ 32.02ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success ('\009', { > lines = > │ > [|"\t"|]<br /> position = { > line = 0<br /> > │ > column = 2 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>( , { lines = > [|"\t"|]<br /> position = { > │ > line = 0<br /> column = 2 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div class="dni-plaintext"><pre>'\009' > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ lines = > │ > [|"\t"|]<br /> position = { line = 0<br /> > column = 2 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ \t > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 2 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>2 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 33.78ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ '\009' > │ > │ '\009' > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jEscapedChar @"\\" > │ > |> parserEqual (Success '\\') > │ > > │ > ── [ 32.05ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success ('\\', { lines > = > │ > [|"\\"|]<br /> position = { line > = 0<br /> > │ > column = 2 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(\, { lines = > [|"\\"|]<br /> position = { > │ > line = 0<br /> column = 2 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div class="dni-plaintext"><pre>'\\' > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ lines = > │ > [|"\\"|]<br /> position = { line = 0<br /> > column = 2 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ \\ > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 2 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>2 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 33.80ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ '\\' > │ > │ '\\' > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jEscapedChar @"\n" > │ > |> parserEqual (Success '\n') > │ > > │ > ── [ 30.64ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success ('\010', { > lines = [|"<br > │ > />"|]<br /> position = { line = 0<br > /> > │ > column = 2 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(<br />, { lines = [|"<br > />"|]<br /> > │ > position = { line = 0<br /> column = 2 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div class="dni-plaintext"><pre>'\010' > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ lines = > │ > [|"<br />"|]<br /> position = { line = 0<br /> > column = > │ > 2 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ <br /> > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 2 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>2 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 32.25ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ '\010' > │ > │ '\010' > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jEscapedChar "a" > │ > |> parserEqual ( > │ > Failure ( > │ > "escaped char", > │ > "Unexpected 'a'", > │ > { currentLine = "a"; line = 0; column = 0 } > │ > ) > │ > ) > │ > > │ > ── [ 32.62ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Failure ("escaped > char", "Unexpected > │ > 'a'", { currentLine = "a"<br /> > │ > line = 0<br /> > column = 0 > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div class="dni-plaintext"><pre>"escaped > char" > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><div > │ > class="dni-plaintext"><pre>"Unexpected > 'a'" > │ > │ > </pre></div></td></tr><tr><td>Item3</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ currentLine = > │ > "a"<br /> line = 0<br /> column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > │ > entLine</td><td><div > class="dni-plaintext"><pre>"a" > │ > │ > </pre></div></td></tr><tr><td>line</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > </div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 34.11ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Line:0 Col:0 Error parsing escaped char > │ > │ a > │ > │ ^Unexpected 'a' > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### jUnicodeChar > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let jUnicodeChar = > │ > let backslash = pchar '\\' > │ > let uChar = pchar 'u' > │ > let hexdigit = anyOf ([[ '0' .. '9' ]] @ [[ 'A' .. 'F' > ]] @ [[ 'a' .. 'f' > │ > ]]) > │ > let fourHexDigits = hexdigit .>>. hexdigit .>>. > hexdigit .>>. hexdigit > │ > > │ > let inline convertToChar (((h1, h2), h3), h4) = > │ > let str = $"%c{h1}%c{h2}%c{h3}%c{h4}" > │ > Int32.Parse (str, > Globalization.NumberStyles.HexNumber) |> char > │ > > │ > backslash >>. uChar >>. fourHexDigits > │ > |>> convertToChar > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jUnicodeChar "\\u263A" > │ > |> parserEqual (Success '☺') > │ > > │ > ── [ 44.24ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success ('☺', { lines =│ > [|"\u263A"|]<br /> position = { > line = 0<br /> > │ > column = 6 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(☺, { lines = > [|"\u263A"|]<br /> position > │ > = { line = 0<br /> column = 6 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div class="dni-plaintext"><pre>'☺' > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ lines = > │ > [|"\u263A"|]<br /> position = { line = 0<br /> > column = > │ > 6 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ \u263A > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 6 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>6 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 45.98ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ '☺' > │ > │ '☺' > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### jString > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let quotedString = > │ > let quote = pchar '\"' <?> "quote" > │ > let jchar = jUnescapedChar <|> jEscapedChar <|> > jUnicodeChar > │ > > │ > quote >>. manyChars jchar .>> quote > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let jString = > │ > quotedString > │ > |>> JString > │ > <?> "quoted string" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > jValueRef <| > │ > choice > │ > [[ > │ > jNull > │ > jBool > │ > jString > │ > ]] > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jString "\"\"" > │ > |> parserEqual (Success (JString "")) > │ > > │ > ── [ 44.10ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JString "", > { lines = > │ > [|""""|]<br /> > position = { line = > │ > 0<br /> column = 2 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JString "", { lines > = > │ > [|""""|]<br /> position = { line = > 0<br /> > │ > column = 2 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JString > │ > > ""</code></span></summary><div><table><thead><tr></tr></thead><tbody>< > │ > tr><td>Item</td><td><div > class="dni-plaintext"><pre>"" > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|""""|]<br /> position = { > line = 0<br /> > │ > column = 2 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ "" > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 2 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>2 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 45.89ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JString "" > │ > │ JString "" > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jString "\"a\"" > │ > |> parserEqual (Success (JString "a")) > │ > > │ > ── [ 32.94ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JString "a", > { lines = > │ > [|""a""|]<br /> > position = { line = > │ > 0<br /> column = 3 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JString "a", { lines > = > │ > [|""a""|]<br /> position = { line = > 0<br /> > │ > column = 3 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JString > │ > > "a"</code></span></summary><div><table><thead><tr></tr></thead><tbody> > │ > <tr><td>Item</td><td><div > class="dni-plaintext"><pre>"a" > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|""a""|]<br /> position = { > line = 0<br /> > │ > column = 3 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ "a" > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 3 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>3 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 34.78ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JString "a" > │ > │ JString "a" > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jString "\"ab\"" > │ > |> parserEqual (Success (JString "ab")) > │ > > │ > ── [ 32.89ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JString > "ab", { lines = > │ > [|""ab""|]<br /> > position = { line = > │ > 0<br /> column = 4 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JString "ab", { > lines = > │ > [|""ab""|]<br /> position = { line = > 0<br /> > │ > column = 4 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JString > │ > > "ab"</code></span></summary><div><table><thead><tr></tr></thead><tbody > │ > ><tr><td>Item</td><td><div > class="dni-plaintext"><pre>"ab" > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|""ab""|]<br /> position = { > line = 0<br /> > │ > column = 4 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ "ab" > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 4 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>4 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 34.66ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JString "ab" > │ > │ JString "ab" > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jString "\"ab\\tde\"" > │ > |> parserEqual (Success (JString "ab\tde")) > │ > > │ > ── [ 34.83ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JString "ab > de", { lines = > │ > [|""ab\tde""|]<br /> > position = { > │ > line = 0<br /> > column = 8 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JString "ab de", { > lines = > │ > [|""ab\tde""|]<br /> position = { line > = 0<br /> > │ > column = 8 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JString "ab > │ > > de"</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>< > │ > td>Item</td><td><div class="dni-plaintext"><pre>"ab > de" > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|""ab\tde""|]<br /> position > = { line = 0<br /> > │ > column = 8 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ > "ab\tde" > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 8 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>8 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 36.58ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JString "ab de" > │ > │ JString "ab de" > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jString "\"ab\\u263Ade\"" > │ > |> parserEqual (Success (JString "ab☺de")) > │ > > │ > ── [ 36.85ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JString > "ab☺de", { lines = > │ > [|""ab\u263Ade""|]<br /> > position > │ > = { line = 0<br /> > column = 12 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JString "ab☺de", { > lines = > │ > [|""ab\u263Ade""|]<br /> position = { > line = 0<br /> > │ > column = 12 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JString > │ > > "ab☺de"</code></span></summary><div><table><thead><tr></tr></thead><tb > │ > ody><tr><td>Item</td><td><div > class="dni-plaintext"><pre>"ab☺de" > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|""ab\u263Ade""|]<br /> > position = { line = 0<br > │ > /> column = 12 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ > "ab\u263Ade" > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 12 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>12 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 38.55ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JString "ab☺de" > │ > │ JString "ab☺de" > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### jNumber > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let jNumber = > │ > let optSign = opt (pchar '-') > │ > > │ > let zero = pstring "0" > │ > > │ > let digitOneNine = > │ > satisfy (fun ch -> Char.IsDigit ch && ch <> '0') > "1-9" > │ > > │ > let digit = > │ > satisfy Char.IsDigit "digit" > │ > > │ > let point = pchar '.' > │ > > │ > let e = pchar 'e' <|> pchar 'E' > │ > > │ > let optPlusMinus = opt (pchar '-' <|> pchar '+') > │ > > │ > let nonZeroInt = > │ > digitOneNine .>>. manyChars digit > │ > |>> fun (first, rest) -> string first + rest > │ > > │ > let intPart = zero <|> nonZeroInt > │ > > │ > let fractionPart = point >>. manyChars1 digit > │ > > │ > let exponentPart = e >>. optPlusMinus .>>. manyChars1 > digit > │ > > │ > let inline (|>?) opt f = > │ > match opt with > │ > | None -> "" > │ > | Some x -> f x > │ > > │ > let inline convertToJNumber (((optSign, intPart), > fractionPart), expPart) = > │ > let signStr = > │ > optSign > │ > |>? string > │ > > │ > let fractionPartStr = > │ > fractionPart > │ > |>? (fun digits -> "." + digits) > │ > > │ > let expPartStr = > │ > expPart > │ > |>? fun (optSign, digits) -> > │ > let sign = optSign |>? string > │ > "e" + sign + digits > │ > > │ > (signStr + intPart + fractionPartStr + expPartStr) > │ > |> float > │ > |> JNumber > │ > > │ > optSign .>>. intPart .>>. opt fractionPart .>>. opt > exponentPart > │ > |>> convertToJNumber > │ > <?> "number" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > jValueRef <| > │ > choice > │ > [[ > │ > jNull > │ > jBool > │ > jString > │ > jNumber > │ > ]] > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber "123" > │ > |> parserEqual (Success (JNumber 123.0)) > │ > > │ > ── [ 54.87ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JNumber 123.0, { lines > = > │ > [|"123"|]<br /> position > = { line = 0<br /> > │ > column = 3 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JNumber 123.0, { lines = > [|"123"|]<br /> > │ > position = { line = 0<br /> column = 3 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > 123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > │ > Item</td><td><div class="dni-plaintext"><pre>123.0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"123"|]<br /> position = { line = 0<br > /> > │ > column = 3 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ 123 > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 3 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>3 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 56.49ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JNumber 123.0 > │ > │ JNumber 123.0 > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber "-123" > │ > |> parserEqual (Success (JNumber -123.0)) > │ > > │ > ── [ 36.41ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JNumber -123.0, { > lines = > │ > [|"-123"|]<br /> > position = { line = 0<br /> > │ > column = 4 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JNumber -123.0, { lines = > [|"-123"|]<br > │ > /> position = { line = 0<br /> column = 4 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td > │ > >Item</td><td><div class="dni-plaintext"><pre>-123.0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"-123"|]<br /> position = { line = > 0<br /> > │ > column = 4 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ -123 > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 4 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>4 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 37.99ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JNumber -123.0 > │ > │ JNumber -123.0 > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber "123.4" > │ > |> parserEqual (Success (JNumber 123.4)) > │ > > │ > ── [ 36.34ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JNumber 123.4, { lines > = > │ > [|"123.4"|]<br /> > position = { line = 0<br /> > │ > column = 5 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JNumber 123.4, { lines = > [|"123.4"|]<br > │ > /> position = { line = 0<br /> column = 5 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > 123.4</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > │ > Item</td><td><div class="dni-plaintext"><pre>123.4 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"123.4"|]<br /> position = { line = > 0<br /> > │ > column = 5 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ 123.4 > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 5 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>5 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 38.02ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JNumber 123.4 > │ > │ JNumber 123.4 > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber "-123." > │ > |> parserEqual (Success (JNumber -123.0)) > │ > > │ > ── [ 32.62ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JNumber -123.0, { > lines = > │ > [|"-123."|]<br /> > position = { line = 0<br > │ > /> column = 4 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JNumber -123.0, { lines = > [|"-123."|]<br > │ > /> position = { line = 0<br /> column = 4 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td > │ > >Item</td><td><div class="dni-plaintext"><pre>-123.0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"-123."|]<br /> position = { line = > 0<br /> > │ > column = 4 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ -123. > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 4 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>4 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 34.20ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JNumber -123.0 > │ > │ JNumber -123.0 > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber "00.1" > │ > |> parserEqual (Success (JNumber 0.0)) > │ > > │ > ── [ 33.76ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JNumber 0.0, { lines =│ > [|"00.1"|]<br /> position > = { line = 0<br /> > │ > column = 1 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JNumber 0.0, { lines = > [|"00.1"|]<br /> > │ > position = { line = 0<br /> column = 1 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > 0.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It > │ > em</td><td><div class="dni-plaintext"><pre>0.0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"00.1"|]<br /> position = { line = > 0<br /> > │ > column = 1 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ 00.1 > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 0<br /> > │ > column = 1 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>1 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 35.36ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JNumber 0.0 > │ > │ JNumber 0.0 > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let jNumber_ = jNumber .>> spaces1 > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber_ "123" > │ > |> parserEqual (Success (JNumber 123.0)) > │ > > │ > ── [ 37.58ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JNumber 123.0, { lines > = > │ > [|"123"|]<br /> position > = { line = 1<br /> > │ > column = 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JNumber 123.0, { lines = > [|"123"|]<br /> > │ > position = { line = 1<br /> column = 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > 123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > │ > Item</td><td><div class="dni-plaintext"><pre>123.0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"123"|]<br /> position = { line = 1<br > /> > │ > column = 0 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ 123 > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 1<br /> > │ > column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>1 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 39.22ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JNumber 123.0 > │ > │ JNumber 123.0 > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber_ "-123" > │ > |> parserEqual (Success (JNumber -123.0)) > │ > > │ > ── [ 36.77ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JNumber -123.0, { > lines = > │ > [|"-123"|]<br /> > position = { line = 1<br /> > │ > column = 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JNumber -123.0, { lines = > [|"-123"|]<br > │ > /> position = { line = 1<br /> column = 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td > │ > >Item</td><td><div class="dni-plaintext"><pre>-123.0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"-123"|]<br /> position = { line = > 1<br /> > │ > column = 0 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ -123 > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 1<br /> > │ > column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>1 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 38.39ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JNumber -123.0 > │ > │ JNumber -123.0 > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber_ "-123." > │ > |> parserEqual ( > │ > Failure ( > │ > "number andThen many1 whitespace", > │ > "Unexpected '.'", > │ > { currentLine = "-123."; line = 0; column = 4 } > │ > ) > │ > ) > │ > > │ > ── [ 30.89ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Failure<br /> ("number > andThen many1 > │ > whitespace", "Unexpected '.'", { > currentLine = > │ > "-123."<br /> > │ > line = 0<br /> > column = > │ > 4 > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div class="dni-plaintext"><pre>"number > andThen many1 > │ > whitespace" > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><div > │ > class="dni-plaintext"><pre>"Unexpected > '.'" > │ > │ > </pre></div></td></tr><tr><td>Item3</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ currentLine = > │ > "-123."<br /> line = 0<br /> column = 4 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > │ > entLine</td><td><div > class="dni-plaintext"><pre>"-123." > │ > │ > </pre></div></td></tr><tr><td>line</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>4 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > </div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 32.14ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Line:0 Col:4 Error parsing number > andThen many1 whitespace > │ > │ -123. > │ > │ ^Unexpected '.' > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber_ "123.4" > │ > |> parserEqual (Success (JNumber 123.4)) > │ > > │ > ── [ 36.88ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JNumber 123.4, { lines > = > │ > [|"123.4"|]<br /> > position = { line = 1<br /> > │ > column = 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JNumber 123.4, { lines = > [|"123.4"|]<br > │ > /> position = { line = 1<br /> column = 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > 123.4</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > │ > Item</td><td><div class="dni-plaintext"><pre>123.4 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"123.4"|]<br /> position = { line = > 1<br /> > │ > column = 0 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ 123.4 > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 1<br /> > │ > column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>1 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 38.41ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JNumber 123.4 > │ > │ JNumber 123.4 > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber_ "00.4" > │ > |> parserEqual ( > │ > Failure ( > │ > "number andThen many1 whitespace", > │ > "Unexpected '0'", > │ > { currentLine = "00.4"; line = 0; column = 1 } > │ > ) > │ > ) > │ > > │ > ── [ 31.26ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Failure<br /> ("number > andThen many1 > │ > whitespace", "Unexpected '0'", { > currentLine = > │ > "00.4"<br />│ > line = 0<br /> > column = > │ > 1 > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div class="dni-plaintext"><pre>"number > andThen many1 > │ > whitespace" > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><div > │ > class="dni-plaintext"><pre>"Unexpected > '0'" > │ > │ > </pre></div></td></tr><tr><td>Item3</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ currentLine = > │ > "00.4"<br /> line = 0<br /> column = 1 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > │ > entLine</td><td><div > class="dni-plaintext"><pre>"00.4" > │ > │ > </pre></div></td></tr><tr><td>line</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>1 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > </div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 32.58ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Line:0 Col:1 Error parsing number > andThen many1 whitespace > │ > │ 00.4 > │ > │ ^Unexpected '0' > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber_ "123e4" > │ > |> parserEqual (Success (JNumber 1230000.0)) > │ > > │ > ── [ 37.96ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JNumber 1230000.0, { > lines = > │ > [|"123e4"|]<br /> > position = { line = > │ > 1<br /> column = > 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JNumber 1230000.0, { lines = > │ > [|"123e4"|]<br /> position = { line = 1<br /> > column = > │ > 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > 1230000.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr> > │ > <td>Item</td><td><div class="dni-plaintext"><pre>1230000.0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"123e4"|]<br /> position = { line = > 1<br /> > │ > column = 0 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ 123e4 > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 1<br /> > │ > column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>1 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 39.57ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JNumber 1230000.0 > │ > │ JNumber 1230000.0 > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber_ "123.4e5" > │ > |> parserEqual (Success (JNumber 12340000.0)) > │ > > │ > ── [ 36.89ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JNumber 12340000.0, { > lines = > │ > [|"123.4e5"|]<br /> > position = { line = > │ > 1<br /> column = > 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JNumber 12340000.0, { lines = > │ > [|"123.4e5"|]<br /> position = { line = 1<br /> > column > │ > = 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > 12340000.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr > │ > ><td>Item</td><td><div > class="dni-plaintext"><pre>12340000.0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"123.4e5"|]<br /> position = { line = > 1<br /> > │ > column = 0 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ 123.4e5 > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 1<br /> > │ > column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>1 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 38.54ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JNumber 12340000.0 > │ > │ JNumber 12340000.0 > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jNumber_ "123.4e-5" > │ > |> parserEqual (Success (JNumber 0.001234)) > │ > > │ > ── [ 38.52ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JNumber 0.001234, { > lines = > │ > [|"123.4e-5"|]<br /> > position = { line = > │ > 1<br /> column = 0 > } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JNumber 0.001234, { lines = > │ > [|"123.4e-5"|]<br /> position = { line = 1<br /> > column > │ > = 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > 0.001234</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>< > │ > td>Item</td><td><div class="dni-plaintext"><pre>0.001234 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > │ > d><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ > │ > lines = [|"123.4e-5"|]<br /> position = { line = > 1<br /> > │ > column = 0 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ 123.4e-5 > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 1<br /> > │ > column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>1 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 40.16ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JNumber 0.001234 > │ > │ JNumber 0.001234 > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### jArray > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let jArray = > │ > let left = pchar '[[' .>> spaces > │ > let right = pchar ']]' .>> spaces > │ > let comma = pchar ',' .>> spaces > │ > let value = jValue .>> spaces > │ > > │ > let values = sepBy value comma > │ > > │ > between left values right > │ > |>> JArray > │ > <?> "array" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > jValueRef <| > │ > choice > │ > [[ > │ > jNull > │ > jBool > │ > jString > │ > jNumber > │ > jArray > │ > ]] > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jArray "[[ 1, 2 ]]" > │ > |> parserEqual (Success (JArray [[ JNumber 1.0; JNumber 2.0 > ]])) > │ > > │ > ── [ 74.19ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success (JArray [JNumber 1.0; > JNumber 2.0], { lines > │ > = [|"[ 1, 2 ]"|]<br />│ > position = { line = 1<br /> > │ > column = 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JArray [JNumber 1.0; JNumber > 2.0], { lines = > │ > [|"[ 1, 2 ]"|]<br /> position = { line = 1<br /> > column > │ > = 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JArray [JNumber 1.0; JNumber > │ > > 2.0]</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I > │ > > tem</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><t > │ > body><tr><td>0</td><td><details > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > 1.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It > │ > em</td><td><div class="dni-plaintext"><pre>1.0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><t > │ > d><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JNumber > │ > > 2.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It > │ > em</td><td><div class="dni-plaintext"><pre>2.0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><detai > │ > ls class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ lines = > │ > [|"[ 1, 2 ]"|]<br /> position = { line = 1<br /> > column > │ > = 0 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ [ 1, 2 ] > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 1<br /> > │ > column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>1 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 76.06ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JArray [JNumber 1.0; JNumber 2.0] > │ > │ JArray [JNumber 1.0; JNumber 2.0] > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jArray "[[ 1, 2, ]]" > │ > |> parserEqual ( > │ > Failure ( > │ > "array", > │ > "Unexpected ','", > │ > { currentLine = "[[ 1, 2, ]]"; line = 0; column = 6 > } > │ > ) > │ > ) > │ > > │ > ── [ 36.17ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Failure ("array", > "Unexpected > │ > ','", { currentLine = "[ 1, 2, ]"<br > /> > │ > line = 0<br /> column > = 6 > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div > class="dni-plaintext"><pre>"array" > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><div > │ > class="dni-plaintext"><pre>"Unexpected > ','" > │ > │ > </pre></div></td></tr><tr><td>Item3</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ currentLine = > │ > "[ 1, 2, ]"<br /> line = 0<br /> column = 6 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > │ > entLine</td><td><div class="dni-plaintext"><pre>"[ 1, > 2, ]" > │ > │ > </pre></div></td></tr><tr><td>line</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>6 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > </div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 37.40ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Line:0 Col:6 Error parsing array > │ > │ [ 1, 2, ] > │ > │ ^Unexpected ',' > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### jObject > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let jObject = > │ > let left = spaces >>. pchar '{' .>> spaces > │ > let right = pchar '}' .>> spaces > │ > let colon = pchar ':' .>> spaces > │ > let comma = pchar ',' .>> spaces > │ > let key = quotedString .>> spaces > │ > let value = jValue .>> spaces > │ > > │ > let keyValue = (key .>> colon) .>>. value > │ > let keyValues = sepBy keyValue comma > │ > > │ > between left keyValues right > │ > |>> Map.ofList > │ > |>> JObject > │ > <?> "object" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > jValueRef <| > │ > choice > │ > [[ > │ > jNull > │ > jBool > │ > jString > │ > jNumber > │ > jArray > │ > jObject > │ > ]] > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jObject """{ "a":1, "b" : 2 }""" > │ > |> parserEqual ( > │ > Success ( > │ > JObject ( > │ > Map.ofList [[ > │ > "a", JNumber 1.0 > │ > "b", JNumber 2.0 > │ > ]] > │ > ) > │ > ) > │ > ) > │ > > │ > ── [ 79.47ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success<br /> (JObject (map > [("a", > │ > JNumber 1.0); ("b", JNumber 2.0)]),<br /> { > lines = [|"{ > │ > "a":1, "b" : 2 }"|]<br /> > position = { line = > │ > 1<br /> column = 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JObject (map [("a", > JNumber 1.0); > │ > ("b", JNumber 2.0)]), { lines = [|"{ > "a":1, > │ > "b" : 2 }"|]<br /> position = { line = > 1<br /> > │ > column = 0 } > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JObject (map [("a", > JNumber 1.0); > │ > ("b", JNumber > │ > > 2.0)])</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td > │ > > >Item</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><t > │ > body><tr><td><div class="dni-plaintext"><pre>"a" > │ > │ </pre></div></td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > │ > > 1.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It > │ > em</td><td><div class="dni-plaintext"><pre>1.0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td><div > │ > class="dni-plaintext"><pre>"b" > │ > │ > │ > > </pre></d...le></td></tr></tbody></table></div></details></td></tr><tr><td>Item2 > │ > </td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>{ lines = [|"{ > "a":1, "b" > │ > : 2 }"|]<br /> position = { line = 1<br /> > column = 0 } > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > s</td><td><div class="dni-plaintext"><pre>[ { > "a":1, "b" : > │ > 2 } > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 1<br /> > │ > column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>1 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 81.28ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ JObject (map [("a", JNumber 1.0); ("b", > JNumber 2.0)]) > │ > │ JObject (map [("a", JNumber 1.0); ("b", > JNumber 2.0)]) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run jObject """{ "a":1, "b" : 2, }""" > │ > |> parserEqual ( > │ > Failure ( > │ > "object", > │ > "Unexpected ','", > │ > { currentLine = """{ "a":1, "b" : 2, }"""; line = > 0; column = 18 } > │ > ) > │ > ) > │ > > │ > ── [ 42.93ms - return value ] > ────────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Failure ("object", > "Unexpected > │ > ','", { currentLine = "{ "a":1, > "b" : 2, > │ > }"<br /> line = > 0<br /> > │ > column = 18 > │ > > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > │ > m1</td><td><div > class="dni-plaintext"><pre>"object" > │ > │ > </pre></div></td></tr><tr><td>Item2</td><td><div > │ > class="dni-plaintext"><pre>"Unexpected > ','" > │ > │ > </pre></div></td></tr><tr><td>Item3</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ currentLine = > │ > "{ "a":1, "b" : 2, }"<br /> > line = 0<br /> > │ > column = 18 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > │ > entLine</td><td><div class="dni-plaintext"><pre>"{ > "a":1, > │ > "b" : 2, }" > │ > │ > </pre></div></td></tr><tr><td>line</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>18 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > </div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 44.25ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Line:0 Col:18 Error parsing object > │ > │ { "a":1, "b" : 2, } > │ > │ ^Unexpected ',' > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### jValue > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let example1 = """{ > │ > "name" : "Scott", > │ > "isMale" : true, > │ > "bday" : {"year":2001, "month":12, "day":25 }, > │ > "favouriteColors" : [["blue", "green"]], > │ > "emptyArray" : [[]], > │ > "emptyObject" : {} > │ > }""" > │ > run jValue example1 > │ > |> parserEqual ( > │ > Success ( > │ > JObject ( > │ > Map.ofList [[ > │ > "name", JString "Scott" > │ > "isMale", JBool true > │ > "bday", JObject ( > │ > Map.ofList [[ > │ > "year", JNumber 2001.0 > │ > "month", JNumber 12.0 > │ > "day", JNumber 25.0 > │ > ]] > │ > ) > │ > "favouriteColors", JArray [[ JString > "blue"; JString "green" ]] > │ > "emptyArray", JArray [[]] > │ > "emptyObject", JObject Map.empty > │ > ]] > │ > ) > │ > ) > │ > ) > │ > > │ > ── [ 147.09ms - return value ] > ───────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success<br /> (JObject<br /> > (map<br /> > │ > [("bday",<br /> JObject<br /> > (map<br /> > │ > [("day", JNumber 25.0); ("month", > JNumber 12.0);<br /> > │ > ("year", JNumber 2001.0)])); > ("emptyArray", JArray []);<br > │ > /> ("emptyObject", JObject (map []));<br > /> > │ > ("favouriteColors", > │ > > ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It > │ > em</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JObject<br /> (map<br /> > │ > [("bday",<br /> JObject<br /> > (map<br /> > │ > [("day", JNumber 25.0); ("month", > JNumber 12.0);<br /> > │ > ("year", JNumber 2001.0)])); > ("emptyArray", JArray []);<br > │ > /> ("emptyObject", JObject (map []));<br />│ > ("favouriteColors", JArray [JString > "blue"; JString > │ > > "gr...</code></span></summary><div><table><thead><tr></tr></thead><tbody><t > │ > r><td>Item1</td><td><details > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JObject<br /> (map<br /> > [("bday",<br > │ > /> JObject<br /> (map<br /> > [("day", JNumber > │ > 25.0); ("month", JNumber 12.0);<br /> > ("year", > │ > JNumber 2001.0)])); ("emptyArray", JArra...0 } > │ > > ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>li > │ > nes</td><td><div class="dni-plaintext"><pre>[ {, > "name" : > │ > "Scott",, "isMale" : true,, > "bday" : > │ > {"year":2001, "month":12, > "day":25 },, > │ > "favouriteColors" : ["blue", > "green"],, > │ > "emptyArray" : [],, "emptyObject" : > {}, } > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 8<br /> > │ > column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>8 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 148.84ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ JObject > │ > │ (map > │ > │ [("bday", > │ > │ JObject > │ > │ (map > │ > │ [("day", JNumber 25.0); > ("month", JNumber 12.0); > │ > │ ("year", JNumber > 2001.0)])); ("emptyArray", > │ > JArray []); > │ > │ ("emptyObject", JObject (map [])); > │ > │ ("favouriteColors", JArray > [JString "blue"; JString > │ > "green"]); > │ > │ ("isMale", JBool true); ("name", > JString "Scott")]) > │ > │ JObject > │ > │ (map > │ > │ [("bday", JObject (map [("day", > JNumber 25.0); ("month", > │ > JNumber 12.0); ("year", JNumber 2001.0)])); > │ > │ ("emptyArray", JArray []); > ("emptyObject", JObject (map > │ > [])); > │ > │ ("favouriteColors", JArray > [JString "blue"; JString > │ > "green"]); ("isMale", JBool true); ("name", JString > "Scott")]) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let example2 = """{"widget": { > │ > "debug": "on", > │ > "window": { > │ > "title": "Sample Konfabulator Widget", > │ > "name": "main_window", > │ > "width": 500, > │ > "height": 500 > │ > }, > │ > "image": { > │ > "src": "Images/Sun.png", > │ > "name": "sun1", > │ > "hOffset": 250, > │ > "vOffset": 250, > │ > "alignment": "center" > │ > }, > │ > "text": { > │ > "data": "Click Here", > │ > "size": 36, > │ > "style": "bold", > │ > "name": "text1", > │ > "hOffset": 250, > │ > "vOffset": 100, > │ > "alignment": "center", > │ > "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * > 90;" > │ > } > │ > }}""" > │ > > │ > run jValue example2 > │ > |> parserEqual ( > │ > Success ( > │ > JObject ( > │ > Map.ofList [[ > │ > "widget", JObject ( > │ > Map.ofList [[ > │ > "debug", JString "on" > │ > "window", JObject ( > │ > Map.ofList [[ > │ > "title", JString "Sample > Konfabulator Widget" > │ > "name", JString > "main_window" > │ > "width", JNumber 500.0 > │ > "height", JNumber 500.0 > │ > ]] > │ > ) > │ > "image", JObject ( > │ > Map.ofList [[ > │ > "src", JString > "Images/Sun.png" > │ > "name", JString "sun1" > │ > "hOffset", JNumber 250.0 > │ > "vOffset", JNumber 250.0 > │ > "alignment", JString > "center" > │ > ]] > │ > ) > │ > "text", JObject ( > │ > Map.ofList [[ > │ > "data", JString "Click > Here" > │ > "size", JNumber 36.0 > │ > "style", JString "bold" > │ > "name", JString "text1" > │ > "hOffset", JNumber 250.0 > │ > "vOffset", JNumber 100.0 > │ > "alignment", JString > "center" > │ > "onMouseUp", JString > "sun1.opacity = > │ > (sun1.opacity / 100) * 90;" > │ > ]] > │ > ) > │ > ]] > │ > ) > │ > ]] > │ > ) > │ > ) > │ > ) > │ > > │ > ── [ 322.45ms - return value ] > ───────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success<br /> (JObject<br /> > (map<br /> > │ > [("widget",<br /> JObject<br /> > (map<br /> > │ > [("debug", JString "on");<br />│ > ("image",<br /> JObject<br />│ > (map<br /> [("alignment", > JString > │ > "center");<br /> > │ > > ("hOffset"...</code></span></summary><div><table><thead><tr></tr></the > │ > ad><tbody><tr><td>Item</td><td><details > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JObject<br /> (map<br /> > │ > [("widget",<br /> JObject<br /> > (map<br /> > │ > [("debug", JString "on");<br />│ > ("image",<br /> JObject<br /> > (map<br /> > │ > [("alignment", JString "center"); > ("hOffset", > │ > JNumber 250.0);<br /> ("name", > JString > │ > > "sun1"...</code></span></summary><div><table><thead><tr></tr></thead>< > │ > tbody><tr><td>Item1</td><td><details > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JObject<br /> (map<br /> > │ > [("widget",<br /> JObject<br /> > (map<br /> > │ > [("debug", JString "on");<br />│ > ("image",<br /> JObject<br />│ > (...ot;center", },, "text": {, > "data": > │ > "Click Here",, "size": 36,,│ > "style": "bold",, > "name": > │ > "text1",, "hOffset": 250,,│ > "vOffset": 100,, "alignment": > "center",, > │ > "onMouseUp": "sun1.opacity = (sun1.opacity / > 100) * 90;", > │ > }, }} > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 26<br > │ > /> column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>26 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 324.11ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ JObject > │ > │ (map > │ > │ [("widget", > │ > │ JObject > │ > │ (map > │ > │ [("debug", JString "on"); > │ > │ ("image", > │ > │ JObject > │ > │ (map > │ > │ [("alignment", > JString "center"); > │ > ("hOffset", JNumber 250.0); > │ > │ ("name", JString > "sun1"); ("src", JString > │ > "Images/Sun.png"); > │ > │ ("vOffset", JNumber > 250.0)])); > │ > │ ("text", > │ > │ JObject > │ > │ (map > │ > │ [("alignment", > JString "center"); > │ > │ ("data", JString > "Click Here"); > │ > ("hOffset", JNumber 250.0); > │ > │ ("name", JString > "text1"); > │ > │ ("onMouseUp", > │ > │ JString > "sun1.opacity = (sun1.opacity / > │ > 100) * 90;"); > │ > │ ("size", JNumber > 36.0); ("style", JString > │ > "bold"); > │ > │ ("vOffset", JNumber > 100.0)])); > │ > │ ("window", > │ > │ JObject > │ > │ (map > │ > │ [("height", JNumber > 500.0); ("name", > │ > JString "main_window"); > │ > │ ("title", JString > "Sample Konfabulator > │ > Widget"); > │ > │ ("width", JNumber > 500.0)]))]))]) > │ > │ JObject > │ > │ (map > │ > │ [("widget", > │ > │ JObject > │ > │ (map > │ > │ [("debug", JString "on"); > │ > │ ("image", > │ > │ JObject > │ > │ (map > │ > │ [("alignment", > JString "center"); > │ > ("hOffset", JNumber 250.0); ("name", JString "sun1"); > │ > │ ("src", JString > "Images/Sun.png"); > │ > ("vOffset", JNumber 250.0)])); > │ > │ ("text", > │ > │ JObject > │ > │ (map > │ > │ [("alignment", > JString "center"); ("data", > │ > JString "Click Here"); ("hOffset", JNumber 250.0); > │ > │ ("name", JString > "text1"); ("onMouseUp", > │ > JString "sun1.opacity = (sun1.opacity / 100) * 90;"); > │ > │ ("size", JNumber > 36.0); ("style", JString > │ > "bold"); ("vOffset", JNumber 100.0)])); > │ > │ ("window", > │ > │ JObject > │ > │ (map > │ > │ [("height", JNumber > 500.0); ("name", > │ > JString "main_window"); > │ > │ ("title", JString > "Sample Konfabulator > │ > Widget"); ("width", JNumber 500.0)]))]))]) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let example3 = """{ > │ > "string": "Hello, \"World\"!", > │ > "escapedString": "This string contains > \\/\\\\\\b\\f\\n\\r\\t\\\"\\'", > │ > "number": 42, > │ > "scientificNumber": 3.14e-10, > │ > "boolean": true, > │ > "nullValue": null, > │ > "array": [[1, 2, 3, 4, 5]], > │ > "unicodeString1": "프리마", > │ > "unicodeString2": "\u0048\u0065\u006C\u006C\u006F, > │ > \u0022\u0057\u006F\u0072\u006C\u0064\u0022!", > │ > "specialCharacters": "!@#$%^&*()", > │ > "emptyArray": [[]], > │ > "emptyObject": {}, > │ > "nestedArrays": [[[[1, 2, 3]], [[4, 5, 6]]]], > │ > "object": { > │ > "nestedString": "Nested Value", > │ > "nestedNumber": 3.14, > │ > "nestedBoolean": false, > │ > "nestedNull": null, > │ > "nestedArray": [["a", "b", "c"]], > │ > "nestedObject": { > │ > "nestedProperty": "Nested Object Value" > │ > } > │ > }, > │ > "nestedObjects": [[ > │ > {"name": "Alice", "age": 25}, > │ > {"name": "Bob", "age": 30} > │ > ]] > │ > }""" > │ > run jValue example3 > │ > |> parserEqual ( > │ > Success ( > │ > JObject ( > │ > Map.ofList [[ > │ > "string", JString @"Hello, ""World""!" > │ > "escapedString", JString @"This string > contains > │ > \/\\\b\f\n\r\t\""\'" > │ > "number", JNumber 42.0 > │ > "scientificNumber", JNumber 3.14e-10 > │ > "boolean", JBool true > │ > "nullValue", JNull > │ > "array", JArray [[ > │ > JNumber 1.0; JNumber 2.0; JNumber 3.0; > JNumber 4.0; JNumber > │ > 5.0 > │ > ]] > │ > "unicodeString1", JString "프리마" > │ > "unicodeString2", JString @"Hello, > ""World""!" > │ > "specialCharacters", JString "!@#$%^&*()" > │ > "emptyArray", JArray [[]] > │ > "emptyObject", JObject Map.empty > │ > "nestedArrays", JArray [[ > │ > JArray [[ JNumber 1.0; JNumber 2.0; > JNumber 3.0 ]] > │ > JArray [[ JNumber 4.0; JNumber 5.0; > JNumber 6.0 ]] > │ > ]] > │ > "object", JObject ( > │ > Map.ofList [[ > │ > "nestedString", JString "Nested > Value" > │ > "nestedNumber", JNumber 3.14 > │ > "nestedBoolean", JBool false > │ > "nestedNull", JNull > │ > "nestedArray", JArray [[JString > "a"; JString "b"; > │ > JString "c"]] > │ > "nestedObject", JObject ( > │ > Map.ofList [[ > │ > "nestedProperty", JString > "Nested Object Value" > │ > ]] > │ > ) > │ > ]] > │ > ) > │ > "nestedObjects", JArray [[ > │ > JObject (Map.ofList [[ "name", JString > "Alice"; "age", JNumber > │ > 25.0 ]]) > │ > JObject (Map.ofList [[ "name", JString > "Bob"; "age", JNumber > │ > 30.0 ]]) > │ > ]] > │ > ]] > │ > ) > │ > ) > │ > ) > │ > > │ > ── [ 466.64ms - return value ] > ───────────────────────────────────────────────── > │ > │ <details open="open" > class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>Success<br /> (JObject<br /> > (map<br /> > │ > [("array",<br /> JArray<br /> > [JNumber 1.0; > │ > JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber 5.0]);<br />│ > ("boolean", JBool true); ("emptyArray", > JArray []);<br /> > │ > ("emptyObject", JObject (map []));<br /> > │ > ("escapedString", JString "This > │ > > s...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I > │ > tem</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>(JObject<br /> (map<br /> > │ > [("array",<br /> JArray [JNumber 1.0; > JNumber 2.0; JNumber 3.0; > │ > JNumber 4.0; JNumber 5.0]);<br /> > ("boolean", JBool true); > │ > ("emptyArray", JArray []);<br /> > ("emptyObject", > │ > JObject (map []));<br /> ("escapedString", > JString "This > │ > string contains \/\\\b\f<br />\r\t\"\'");<br > /> > │ > > ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It > │ > em1</td><td><details class="dni-treeview"><summary><span > │ > class="dni-code-hint"><code>JObject<br /> (map<br /> > │ > [("array",<br /> JArray [JNumber 1.0; > JNumber 2.0; JNumber 3.0; > │ > JNumber 4.0; JNumber 5.0]);<br /> > ("boolean", JBool true); > │ > ("emptyArray", JArray []);<br /> > ("emptyObject", > │ > JObject (map []));<br /> ("es...ot;: 3.14,, > │ > "nestedBoolean": false,, > "nestedNull": null,, > │ > "nestedArray": ["a", "b", > "c"],, > │ > "nestedObject": {, > "nestedProperty": "Nested > │ > Object Value", }, },, > "nestedObjects": [, > │ > {"name": "Alice", "age": > 25},, > │ > {"name": "Bob", "age": 30}, > ], } > │ > ]</pre></div></td></tr><tr><td>position</td><td><details > │ > class="dni-treeview"><summary><span > class="dni-code-hint"><code>{ line = 29<br > │ > /> column = 0 > │ > > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > │ > </td><td><div class="dni-plaintext"><pre>29 > │ > │ > </pre></div></td></tr><tr><td>column</td><td><div > │ > class="dni-plaintext"><pre>0 > │ > │ > │ > > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > │ > > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > │ > ble></div></details><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ > > │ > ── [ 468.35ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ JObject > │ > │ (map > │ > │ [("array", > │ > │ JArray [JNumber 1.0; JNumber 2.0; > JNumber 3.0; JNumber > │ > 4.0; JNumber 5.0]); > │ > │ ("boolean", JBool true); > ("emptyArray", JArray []); > │ > │ ("emptyObject", JObject (map [])); > │ > │ ("escapedString", JString "This > string contains > │ > \/\\\b\f\n\r\t\"\'"); > │ > │ ("nestedArrays", > │ > │ JArray > │ > │ [JArray [JNumber 1.0; JNumber > 2.0; JNumber 3.0]; > │ > │ JArray [JNumber 4.0; JNumber > 5.0; JNumber 6.0]]); > │ > │ ("nestedObjects", > │ > │ JArray > │ > │ [JObject (map [("age", JNumber > 25.0); ("name", > │ > JString "Alice")]); > │ > │ JObject (map [("age", JNumber > 30.0); ("name", > │ > JString "Bob")])]); > │ > │ ("nullValue", JNull); ("number", > JNumber 42.0); ...]) > │ > │ JObject > │ > │ (map > │ > │ [("array", JArray [JNumber 1.0; > JNumber 2.0; JNumber > │ > 3.0; JNumber 4.0; JNumber 5.0]); ("boolean", JBool true); > │ > │ ("emptyArray", JArray []); > ("emptyObject", JObject (map > │ > [])); > │ > │ ("escapedString", JString "This > string contains > │ > \/\\\b\f\n\r\t\"\'"); > │ > │ ("nestedArrays", > │ > │ JArray [JArray [JNumber 1.0; > JNumber 2.0; JNumber > │ > 3.0]; JArray [JNumber 4.0; JNumber 5.0; JNumber 6.0]]); > │ > │ ("nestedObjects", > │ > │ JArray > │ > │ [JObject (map [("age", JNumber > 25.0); ("name", > │ > JString "Alice")]); > │ > │ JObject (map [("age", JNumber > 30.0); ("name", > │ > JString "Bob")])]); ("nullValue", JNull); > │ > │ ("number", JNumber 42.0); ...]) > │ > │ > │ > │ > │ 00:00:22 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 152736 } > │ 00:00:22 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb", "--to", "html", > "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:23 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/apps/parser/JsonParser.dib.ipynb to html > │ 00:00:23 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:00:23 v #7 ! validate(nb) > │ 00:00:24 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:00:24 v #9 ! return _pygments_highlight( > │ 00:00:25 v #10 ! [NbConvertApp] Writing 501905 bytes to > c:\home\git\polyglot\apps\parser\JsonParser.dib.html > │ 00:00:25 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 864 } > │ 00:00:25 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 864 } > │ 00:00:25 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/apps/parser/JsonParser.dib.html'; (Get-Content $path -Raw) > -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } > | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = > 'c:/home/git/polyglot/apps/parser/JsonParser.dib.html'; (Get-Content $path -Raw) > -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | > Set-Content $path"; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:25 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:00:25 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:00:25 d #16 spiral.run / dib / { exit_code = 0; > result_length = 153659 } > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "Parser.dib"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/apps/parser/Parser.dib", "--output-path", > "c:/home/git/polyglot/apps/parser/Parser.dib.ipynb"]; options = { command = > dotnet repl --exit-after-run --run "c:/home/git/polyglot/apps/parser/Parser.dib" > --output-path "c:/home/git/polyglot/apps/parser/Parser.dib.ipynb"; > cancellation_token = None; environment_variables = > Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = > None; stdin = None; trace = false; working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # Parser (Polyglot) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > open Common > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### TextInput > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type Position = > │ > { > │ > line : int > │ > column : int > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let initialPos = { line = 0; column = 0 } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline incrCol (pos : Position) = > │ > { pos with column = pos.column + 1 } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline incrLine pos = > │ > { line = pos.line + 1; column = 0 } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type InputState = > │ > { > │ > lines : string[[]] > │ > position : Position > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline fromStr str = > │ > { > │ > lines = > │ > if str |> String.IsNullOrEmpty > │ > then [[||]] > │ > else str |> SpiralSm.split_string [[| "\r\n"; > "\n" |]] > │ > position = initialPos > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > fromStr "" |> _assertEqual { > │ > lines = [[||]] > │ > position = { line = 0; column = 0 } > │ > } > │ > > │ > ── [ 56.58ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ { lines = [||] > │ > │ position = { line = 0 > │ > │ column = 0 } } > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > fromStr "Hello \n World" |> _assertEqual { > │ > lines = [[| "Hello "; " World" |]] > │ > position = { line = 0; column = 0 } > │ > } > │ > > │ > ── [ 23.98ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ { lines = [|"Hello "; " World"|] > │ > │ position = { line = 0 > │ > │ column = 0 } } > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline currentLine inputState = > │ > let linePos = inputState.position.line > │ > if linePos < inputState.lines.Length > │ > then inputState.lines.[[linePos]] > │ > else "end of file" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline nextChar input = > │ > let linePos = input.position.line > │ > let colPos = input.position.column > │ > > │ > if linePos >= input.lines.Length > │ > then input, None > │ > else > │ > let currentLine = currentLine input > │ > if colPos < currentLine.Length then > │ > let char = currentLine.[[colPos]] > │ > let newPos = incrCol input.position > │ > let newState = { input with position = newPos } > │ > newState, Some char > │ > else > │ > let char = '\n' > │ > let newPos = incrLine input.position > │ > let newState = { input with position = newPos } > │ > newState, Some char > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let newInput, charOpt = fromStr "Hello World" |> nextChar > │ > > │ > newInput |> _assertEqual { > │ > lines = [[| "Hello World" |]] > │ > position = { line = 0; column = 1 } > │ > } > │ > charOpt |> _assertEqual (Some 'H') > │ > > │ > ── [ 39.08ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ { lines = [|"Hello World"|] > │ > │ position = { line = 0 > │ > │ column = 1 } } > │ > │ > │ > │ Some 'H' > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let newInput, charOpt = fromStr "Hello\n\nWorld" |> > nextChar > │ > > │ > newInput |> _assertEqual { > │ > lines = [[| "Hello"; ""; "World" |]] > │ > position = { line = 0; column = 1 } > │ > } > │ > charOpt |> _assertEqual (Some 'H') > │ > > │ > ── [ 29.88ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ { lines = [|"Hello"; ""; "World"|] > │ > │ position = { line = 0 > │ > │ column = 1 } } > │ > │ > │ > │ Some 'H' > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### Parser > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type Input = InputState > │ > type ParserLabel = string > │ > type ParserError = string > │ > > │ > type ParserPosition = > │ > { > │ > currentLine : string > │ > line : int > │ > column : int > │ > } > │ > > │ > type ParseResult<'a> = > │ > | Success of 'a > │ > | Failure of ParserLabel * ParserError * ParserPosition > │ > > │ > type Parser<'a> = > │ > { > │ > label : ParserLabel > │ > parseFn : Input -> ParseResult<'a * Input> > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline printResult result = > │ > match result with > │ > | Success (value, input) -> > │ > printfn $"%A{value}" > │ > | Failure (label, error, parserPos) -> > │ > let errorLine = parserPos.currentLine > │ > let colPos = parserPos.column > │ > let linePos = parserPos.line > │ > let failureCaret = $"{' ' |> string |> > String.replicate colPos}^{error}" > │ > printfn $"Line:%i{linePos} Col:%i{colPos} Error > parsing > │ > %s{label}\n%s{errorLine}\n%s{failureCaret}" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline runOnInput parser input = > │ > parser.parseFn input > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline run parser inputStr = > │ > runOnInput parser (fromStr inputStr) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline parserPositionFromInputState (inputState : > Input) = > │ > { > │ > currentLine = currentLine inputState > │ > line = inputState.position.line > │ > column = inputState.position.column > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline getLabel parser = > │ > parser.label > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline setLabel parser newLabel = > │ > { > │ > label = newLabel > │ > parseFn = fun input -> > │ > match parser.parseFn input with > │ > | Success s -> Success s > │ > | Failure (oldLabel, err, pos) -> Failure > (newLabel, err, pos) > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let (<?>) = setLabel > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline satisfy predicate label = > │ > { > │ > label = label > │ > parseFn = fun input -> > │ > let remainingInput, charOpt = nextChar input > │ > match charOpt with > │ > | None -> > │ > let err = "No more input" > │ > let pos = parserPositionFromInputState > input > │ > Failure (label, err, pos) > │ > | Some first -> > │ > if predicate first > │ > then Success (first, remainingInput) > │ > else > │ > let err = $"Unexpected '%c{first}'" > │ > let pos = parserPositionFromInputState > input > │ > Failure (label, err, pos) > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "Hello" > │ > let parser = satisfy (fun c -> c = 'H') "H" > │ > runOnInput parser input |> _assertEqual ( > │ > Success ( > │ > 'H', > │ > { > │ > lines = [[| "Hello" |]] > │ > position = { line = 0; column = 1 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 38.94ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success ('H', { lines = [|"Hello"|] > │ > │ position = { line = 0 > │ > │ column = 1 > } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "World" > │ > let parser = satisfy (fun c -> c = 'H') "H" > │ > runOnInput parser input |> _assertEqual ( > │ > Failure ( > │ > "H", > │ > "Unexpected 'W'", > │ > { > │ > currentLine = "World" > │ > line = 0 > │ > column = 0 > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 34.47ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Failure ("H", "Unexpected 'W'", { > currentLine = "World" > │ > │ line = > 0 > │ > │ column > = 0 }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline bindP f p = > │ > { > │ > label = "unknown" > │ > parseFn = fun input -> > │ > match runOnInput p input with > │ > | Failure (label, err, pos) -> Failure (label, > err, pos) > │ > | Success (value1, remainingInput) -> > runOnInput (f value1) > │ > remainingInput > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline (>>=) p f = bindP f p > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "Hello" > │ > let parser = satisfy (fun c -> c = 'H') "H" > │ > let parser2 = parser >>= fun c -> satisfy (fun c -> c = > 'e') "e" > │ > runOnInput parser2 input |> _assertEqual ( > │ > Success ( > │ > 'e', > │ > { > │ > lines = [[| "Hello" |]] > │ > position = { line = 0; column = 2 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 52.05ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success ('e', { lines = [|"Hello"|] > │ > │ position = { line = 0 > │ > │ column = 2 > } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "World" > │ > let parser = satisfy (fun c -> c = 'W') "W" > │ > let parser2 = parser >>= fun c -> satisfy (fun c -> c = > 'e') "e" > │ > runOnInput parser2 input |> _assertEqual ( > │ > Failure ( > │ > "e", > │ > "Unexpected 'o'", > │ > { > │ > currentLine = "World" > │ > line = 0 > │ > column = 1 > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 46.39ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Failure ("e", "Unexpected 'o'", { > currentLine = "World" > │ > │ line = > 0 > │ > │ column > = 1 }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline returnP x = > │ > { > │ > label = $"%A{x}" > │ > parseFn = fun input -> Success (x, input) > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "Hello" > │ > let parser = returnP "Hello" > │ > runOnInput parser input |> _assertEqual ( > │ > Success ( > │ > "Hello", > │ > { > │ > lines = [[| "Hello" |]] > │ > position = { line = 0; column = 0 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 28.16ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success ("Hello", { lines = [|"Hello"|] > │ > │ position = { line = > 0 > │ > │ column > = 0 } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline mapP f = > │ > bindP (f >> returnP) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let (<!>) = mapP > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline (|>>) x f = f <!> x > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "Hello" > │ > let parser = satisfy (fun c -> c = 'H') "H" > │ > let parser2 = parser |>> string > │ > runOnInput parser2 input |> _assertEqual ( > │ > Success ( > │ > "H", > │ > { > │ > lines = [[| "Hello" |]] > │ > position = { line = 0; column = 1 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 37.26ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success ("H", { lines = [|"Hello"|] > │ > │ position = { line = 0 > │ > │ column = 1 > } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline applyP fP xP = > │ > fP >>= > │ > fun f -> > │ > xP >>= > │ > fun x -> > │ > returnP (f x) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let (<*>) = applyP > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline lift2 f xP yP = > │ > returnP f <*> xP <*> yP > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "Hello" > │ > let parser = satisfy (fun c -> c = 'H') "H" > │ > let parser2 = satisfy (fun c -> c = 'e') "e" > │ > let parser3 = lift2 (fun c1 c2 -> string c1 + string c2) > parser parser2 > │ > runOnInput parser3 input |> _assertEqual ( > │ > Success ( > │ > "He", > │ > { > │ > lines = [[| "Hello" |]] > │ > position = { line = 0; column = 2 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 54.74ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success ("He", { lines = [|"Hello"|] > │ > │ position = { line = 0 > │ > │ column = 2 > } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline andThen p1 p2 = > │ > p1 >>= > │ > fun p1Result -> > │ > p2 >>= > │ > fun p2Result -> > │ > returnP (p1Result, p2Result) > │ > <?> $"{getLabel p1} andThen {getLabel p2}" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let (.>>.) = andThen > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "Hello" > │ > let parser = satisfy (fun c -> c = 'H') "H" > │ > let parser2 = satisfy (fun c -> c = 'e') "e" > │ > let parser3 = parser .>>. parser2 > │ > runOnInput parser3 input |> _assertEqual ( > │ > Success ( > │ > ('H', 'e'), > │ > { > │ > lines = [[| "Hello" |]] > │ > position = { line = 0; column = 2 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 44.23ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success (('H', 'e'), { lines = > [|"Hello"|] > │ > │ position = { line > = 0 > │ > │ > column = 2 } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline orElse p1 p2 = > │ > { > │ > label = $"{getLabel p1} orElse {getLabel p2}" > │ > parseFn = fun input -> > │ > match runOnInput p1 input with > │ > | Success _ as result -> result > │ > | Failure _ -> runOnInput p2 input > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let (<|>) = orElse > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "hello" > │ > let parser = satisfy (fun c -> c = 'H') "H" > │ > let parser2 = satisfy (fun c -> c = 'h') "h" > │ > let parser3 = parser <|> parser2 > │ > runOnInput parser3 input |> _assertEqual ( > │ > Success ( > │ > 'h', > │ > { > │ > lines = [[| "hello" |]] > │ > position = { line = 0; column = 1 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 60.31ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success ('h', { lines = [|"hello"|] > │ > │ position = { line = 0 > │ > │ column = 1 > } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline choice listOfParsers = > │ > listOfParsers |> List.reduce (<|>) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "hello" > │ > let parser = satisfy (fun c -> c = 'H') "H" > │ > let parser2 = satisfy (fun c -> c = 'h') "h" > │ > let parser3 = choice [[ parser; parser2 ]] > │ > runOnInput parser3 input |> _assertEqual ( > │ > Success ( > │ > 'h', > │ > { > │ > lines = [[| "hello" |]] > │ > position = { line = 0; column = 1 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 39.60ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success ('h', { lines = [|"hello"|] > │ > │ position = { line = 0 > │ > │ column = 1 > } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let rec sequence parserList = > │ > match parserList with > │ > | [[]] -> returnP [[]] > │ > | head :: tail -> (lift2 cons) head (sequence tail) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "Hello" > │ > let parser = satisfy (fun c -> c = 'H') "H" > │ > let parser2 = satisfy (fun c -> c = 'e') "e" > │ > let parser3 = sequence [[ parser; parser2 ]] > │ > runOnInput parser3 input |> _assertEqual ( > │ > Success ( > │ > [[ 'H'; 'e' ]], > │ > { > │ > lines = [[| "Hello" |]] > │ > position = { line = 0; column = 2 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 48.31ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success (['H'; 'e'], { lines = > [|"Hello"|] > │ > │ position = { line > = 0 > │ > │ > column = 2 } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let rec parseZeroOrMore parser input = > │ > match runOnInput parser input with > │ > | Failure (_, _, _) -> > │ > [[]], input > │ > | Success (firstValue, inputAfterFirstParse) -> > │ > let subsequentValues, remainingInput = > parseZeroOrMore parser > │ > inputAfterFirstParse > │ > firstValue :: subsequentValues, remainingInput > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline many parser = > │ > { > │ > label = $"many {getLabel parser}" > │ > parseFn = fun input -> Success (parseZeroOrMore > parser input) > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "hello" > │ > let parser = satisfy (fun c -> c = 'H') "H" > │ > let parser2 = many parser > │ > runOnInput parser2 input |> _assertEqual ( > │ > Success ( > │ > [[]], > │ > { > │ > lines = [[| "hello" |]] > │ > position = { line = 0; column = 0 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 38.48ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success ([], { lines = [|"hello"|] > │ > │ position = { line = 0 > │ > │ column = 0 } > }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline many1 p = > │ > p >>= > │ > fun head -> > │ > many p >>= > │ > fun tail -> > │ > returnP (head :: tail) > │ > <?> $"many1 {getLabel p}" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "hello" > │ > let parser = satisfy (fun c -> c = 'H') "H" > │ > let parser2 = many1 parser > │ > runOnInput parser2 input |> _assertEqual ( > │ > Failure ( > │ > "many1 H", > │ > "Unexpected 'h'", > │ > { > │ > currentLine = "hello" > │ > line = 0 > │ > column = 0 > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 52.69ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Failure ("many1 H", "Unexpected 'h'", { > currentLine = "hello" > │ > │ > line = 0 > │ > │ > column = 0 }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline opt p = > │ > let some = p |>> Some > │ > let none = returnP None > │ > (some <|> none) > │ > <?> $"opt {getLabel p}" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "hello" > │ > let parser = satisfy (fun c -> c = 'H') "H" > │ > let parser2 = opt parser > │ > runOnInput parser2 input |> _assertEqual ( > │ > Success ( > │ > None, > │ > { > │ > lines = [[| "hello" |]] > │ > position = { line = 0; column = 0 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 46.52ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success (None, { lines = [|"hello"|] > │ > │ position = { line = 0 > │ > │ column = 0 > } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline (.>>) p1 p2 = > │ > p1 .>>. p2 > │ > |> mapP fst > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline (>>.) p1 p2 = > │ > p1 .>>. p2 > │ > |> mapP snd > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline between p1 p2 p3 = > │ > p1 >>. p2 .>> p3 > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "[[Hello]]" > │ > let parser = > │ > between > │ > (satisfy (fun c -> c = '[[') "[[") > │ > (many (satisfy (fun c -> [[ 'a' .. 'z' ]] @ [[ 'A' > .. 'Z' ]] |> > │ > List.contains c) "letter")) > │ > (satisfy (fun c -> c = ']]') "]]") > │ > runOnInput parser input |> _assertEqual ( > │ > Success ( > │ > [[ 'H'; 'e'; 'l'; 'l'; 'o' ]], > │ > { > │ > lines = [[| "[[Hello]]" |]] > │ > position = { line = 0; column = 7 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 125.65ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ Success (['H'; 'e'; 'l'; 'l'; 'o'], { > lines = [|"[Hello]"|] > │ > │ > position = { line = 0 > │ > │ > column = 7 > │ > } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline sepBy1 p sep = > │ > let sepThenP = sep >>. p > │ > p .>>. many sepThenP > │ > |>> fun (p, pList) -> p :: pList > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline sepBy p sep = > │ > sepBy1 p sep <|> returnP [[]] > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "Hello,World" > │ > let parser = sepBy (many (satisfy (fun c -> c <> ',') "not > comma")) (satisfy > │ > (fun c -> c = ',') "comma") > │ > runOnInput parser input |> _assertEqual ( > │ > Success ( > │ > [[ [[ 'H'; 'e'; 'l'; 'l'; 'o' ]]; [[ 'W'; 'o'; 'r'; > 'l'; 'd'; '\n' ]] > │ > ]], > │ > { > │ > lines = [[| "Hello,World" |]] > │ > position = { line = 1; column = 0 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 81.37ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success ([['H'; 'e'; 'l'; 'l'; 'o']; > ['W'; 'o'; 'r'; 'l'; > │ > 'd'; '\010']], { lines = [|"Hello,World"|] > │ > │ > │ > position = { line = 1 > │ > │ > │ > > │ > column = 0 } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline pchar charToMatch = > │ > satisfy ((=) charToMatch) $"%c{charToMatch}" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline anyOf listOfChars = > │ > listOfChars > │ > |> List.map pchar > │ > |> choice > │ > <?> $"anyOf %A{listOfChars}" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "Hello" > │ > let parser = anyOf [[ 'H'; 'e'; 'l'; 'o' ]] |> many > │ > runOnInput parser input |> _assertEqual ( > │ > Success ( > │ > [[ 'H'; 'e'; 'l'; 'l'; 'o' ]], > │ > { > │ > lines = [[| "Hello" |]] > │ > position = { line = 0; column = 5 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 44.69ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success (['H'; 'e'; 'l'; 'l'; 'o'], { > lines = [|"Hello"|] > │ > │ > position = { line = 0 > │ > │ > column = 5 > │ > } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline charListToStr charList = > │ > charList |> List.toArray |> String > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline manyChars cp = > │ > many cp > │ > |>> charListToStr > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline manyChars1 cp = > │ > many1 cp > │ > |>> charListToStr > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "Hello" > │ > let parser = manyChars1 (anyOf [[ 'H'; 'e'; 'l'; 'o' ]]) > │ > runOnInput parser input |> _assertEqual ( > │ > Success ( > │ > "Hello", > │ > { > │ > lines = [[| "Hello" |]] > │ > position = { line = 0; column = 5 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 63.57ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success ("Hello", { lines = [|"Hello"|] > │ > │ position = { line = > 0 > │ > │ column > = 5 } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline pstring str = > │ > str > │ > |> List.ofSeq > │ > |> List.map pchar > │ > |> sequence > │ > |> mapP charListToStr > │ > <?> str > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "Hello" > │ > let parser = pstring "Hello" > │ > runOnInput parser input |> _assertEqual ( > │ > Success ( > │ > "Hello", > │ > { > │ > lines = [[| "Hello" |]] > │ > position = { line = 0; column = 5 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 59.53ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success ("Hello", { lines = [|"Hello"|] > │ > │ position = { line = > 0 > │ > │ column > = 5 } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let whitespaceChar = > │ > satisfy Char.IsWhiteSpace "whitespace" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let spaces = many whitespaceChar > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let spaces1 = many1 whitespaceChar > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr " Hello" > │ > let parser = spaces1 .>>. pstring "Hello" > │ > runOnInput parser input |> _assertEqual ( > │ > Success ( > │ > ([[ ' '; ' ' ]], "Hello"), > │ > { > │ > lines = [[| " Hello" |]] > │ > position = { line = 0; column = 7 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 58.47ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success (([' '; ' '], "Hello"), { lines > = [|" Hello"|] > │ > │ > position = { line = 0 > │ > │ > column = 7 } > │ > }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let digitChar = > │ > satisfy Char.IsDigit "digit" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let input = fromStr "Hello" > │ > let parser = digitChar > │ > runOnInput parser input |> _assertEqual ( > │ > Failure ( > │ > "digit", > │ > "Unexpected 'H'", > │ > { > │ > currentLine = "Hello" > │ > line = 0 > │ > column = 0 > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 26.59ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Failure ("digit", "Unexpected 'H'", { > currentLine = "Hello" > │ > │ > line = 0 > │ > │ > column = 0 }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let pint = > │ > let inline resultToInt (sign, digits) = > │ > let i = int digits > │ > match sign with > │ > | Some ch -> -i > │ > | None -> i > │ > > │ > let digits = manyChars1 digitChar > │ > > │ > opt (pchar '-') .>>. digits > │ > |> mapP resultToInt > │ > <?> "integer" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run pint "-123" > │ > |> _assertEqual ( > │ > Success ( > │ > -123, > │ > { > │ > lines = [[| "-123" |]] > │ > position = { line = 0; column = 4 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 31.07ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success (-123, { lines = [|"-123"|] > │ > │ position = { line = 0 > │ > │ column = 4 > } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let pfloat = > │ > let inline resultToFloat (((sign, digits1), point), > digits2) = > │ > let fl = float $"{digits1}.{digits2}" > │ > match sign with > │ > | Some ch -> -fl > │ > | None -> fl > │ > > │ > let digits = manyChars1 digitChar > │ > > │ > opt (pchar '-') .>>. digits .>>. pchar '.' .>>. digits > │ > |> mapP resultToFloat > │ > <?> "float" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > run pfloat "-123.45" > │ > |> _assertEqual ( > │ > Success ( > │ > -123.45, > │ > { > │ > lines = [[| "-123.45" |]] > │ > position = { line = 0; column = 7 } > │ > } > │ > ) > │ > ) > │ > > │ > ── [ 35.38ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ Success (-123.45, { lines = > [|"-123.45"|] > │ > │ position = { line = > 0 > │ > │ column > = 7 } }) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline createParserForwardedToRef<'a> () = > │ > let mutable parserRef : Parser<'a> = > │ > { > │ > label = "unknown" > │ > parseFn = fun _ -> failwith "unfixed forwarded > parser" > │ > } > │ > > │ > let wrapperParser = > │ > { parserRef with > │ > parseFn = fun input -> runOnInput parserRef > input > │ > } > │ > > │ > wrapperParser, (fun v -> parserRef <- v) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline (>>%) p x = > │ > p > │ > |>> fun _ -> x > │ 00:00:19 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 31883 } > │ 00:00:19 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/apps/parser/Parser.dib.ipynb", "--to", "html", > "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/apps/parser/Parser.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:21 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/apps/parser/Parser.dib.ipynb to html > │ 00:00:21 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:00:21 v #7 ! validate(nb) > │ 00:00:21 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:00:21 v #9 ! return _pygments_highlight( > │ 00:00:22 v #10 ! [NbConvertApp] Writing 413747 bytes to > c:\home\git\polyglot\apps\parser\Parser.dib.html > │ 00:00:22 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 856 } > │ 00:00:22 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 856 } > │ 00:00:22 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/apps/parser/Parser.dib.html'; (Get-Content $path -Raw) > -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } > | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = > 'c:/home/git/polyglot/apps/parser/Parser.dib.html'; (Get-Content $path -Raw) > -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | > Set-Content $path"; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:23 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:00:23 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:00:23 d #16 spiral.run / dib / { exit_code = 0; > result_length = 32798 } > │ 00:00:00 d #1 writeDibCode / output: Fs / path: > Parser.dib > │ 00:00:00 d #1 writeDibCode / output: Fs / path: > JsonParser.dib > │ 00:00:00 d #2 parseDibCode / output: Fs / file: > Parser.dib > │ 00:00:00 d #3 parseDibCode / output: Fs / file: > JsonParser.dib > │ polyglot/apps/parser/build.ps1 / $env:CI:'' > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../apps/spiral/build.ps1 } | Invoke-Block > > ── [ 7.23m - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 writeDibCode / output: Fs / path: > spiral_compiler.dib > │ 00:00:00 d #2 parseDibCode / output: Fs / file: > spiral_compiler.dib > │ 00:00:00 d #1 persistCodeProject / packages: > [Fable.Core; FSharp.Control.AsyncSeq; FSharpx.Collections; ... ] / modules: > [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; > deps/spiral/lib/spiral/crypto.fsx; ... ] / name: spiral_compiler / hash: / > code.Length: 815365 > │ 00:00:00 d #2 buildProject / fullPath: > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj > │ 00:00:00 d #1 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" > --configuration Release --output > "C:\home\git\polyglot\deps\spiral\apps\compiler\dist" --runtime win-x64"; > options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" > --configuration Release --output > "C:\home\git\polyglot\deps\spiral\apps\compiler\dist" --runtime win-x64; > cancellation_token = None; environment_variables = [||]; on_line = None; stdin = > None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\spiral_compiler" } } > │ 00:00:01 v #2 > Determining projects to restore... > │ 00:00:01 v #3 > Paket version > 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 > │ 00:00:01 v #4 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:01 v #5 > Total time taken: 0 milliseconds > │ 00:00:01 v #6 > All projects are up-to-date for > restore. > │ 00:00:13 v #7 > > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(10087,85) > : warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj] > │ 00:00:13 v #8 > > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(10612,85) > : warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj] > │ 00:00:14 v #9 > > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(11436,43) > : warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj] > │ 00:00:14 v #10 > > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(12366,43) > : warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj] > │ 00:00:14 v #11 > > c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fs(13032,71) > : warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\spiral_compiler\spiral_compiler.fsproj] > │ 00:00:34 v #12 > spiral_compiler -> > c:\home\git\polyglot\target\Builder\spiral_compiler\bin\Release\net9.0\win-x64\s > piral_compiler.dll > │ 00:00:36 v #13 > spiral_compiler -> > C:\home\git\polyglot\deps\spiral\apps\compiler\dist\ > │ 00:00:36 d #14 runtime.execute_with_options_async / { > exit_code = 0; output_length = 2976; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\spiral_compiler\spiral_compiler.fsproj" > --configuration Release --output > "C:\home\git\polyglot\deps\spiral\apps\compiler\dist" --runtime win-x64; > cancellation_token = None; environment_variables = [||]; on_line = None; stdin = > None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\spiral_compiler" } } > │ spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: > C:\home\git\polyglot\target\Builder\spiral_compiler > │ spiral/apps/compiler/build.ps1 / $targetDir = > C:\home\git\polyglot\target\Builder\spiral_compiler / $projectName: > spiral_compiler / $env:CI:'' > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "Supervisor.dib", "--retries", "3"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/apps/spiral/Supervisor.dib", "--output-path", > "c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb"]; options = { command = > dotnet repl --exit-after-run --run > "c:/home/git/polyglot/apps/spiral/Supervisor.dib" --output-path > "c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb"; cancellation_token = > None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), > ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; > working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # Supervisor (Polyglot) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #r > │ > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > │ > dard2.1/FSharp.Control.AsyncSeq.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > │ > 0/System.Reactive.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > │ > netstandard2.0/System.Reactive.Linq.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com > │ > > mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli > │ > > ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0 > │ > /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0 > │ > /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/ > │ > > 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha > │ > rp.Json.dll" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #if !INTERACTIVE > │ > open Lib > │ > #endif > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > open Common > │ > open SpiralFileSystem.Operators > │ > open Microsoft.AspNetCore.SignalR.Client > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### sendJson > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let sendJson (port : int) (json : string) = async { > │ > let host = "127.0.0.1" > │ > let! portOpen = SpiralNetworking.test_port_open host > port > │ > if portOpen then > │ > try > │ > let connection = > │ > > HubConnectionBuilder().WithUrl($"http://{host}:{port}").Build() > │ > do! connection.StartAsync () |> Async.AwaitTask > │ > let! result = connection.InvokeAsync<string> > ("ClientToServerMsg", > │ > json) |> Async.AwaitTask > │ > do! connection.StopAsync () |> Async.AwaitTask > │ > trace Verbose (fun () -> $"Supervisor.sendJson > / port: {port} / > │ > json: {json |> SpiralSm.ellipsis_end 200} / result: {result > |> Option.ofObj |> > │ > Option.map (SpiralSm.ellipsis_end 200)}") _locals > │ > return Some result > │ > with ex -> > │ > trace Critical (fun () -> $"Supervisor.sendJson > / port: {port} / > │ > json: {json |> SpiralSm.ellipsis_end 200} / ex: {ex |> > │ > SpiralSm.format_exception}") _locals > │ > return None > │ > else > │ > trace Debug (fun () -> $"Supervisor.sendJson / > port: {port} / error: > │ > port not open") _locals > │ > return None > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### sendObj > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let sendObj port obj = > │ > obj > │ > |> System.Text.Json.JsonSerializer.Serialize > │ > |> sendJson port > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### workspaceRoot > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let workspaceRoot = SpiralFileSystem.get_workspace_root () > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### getFilePathFromUri > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let getFilePathFromUri uri = > │ > match System.Uri.TryCreate (uri, > System.UriKind.Absolute) with > │ > | true, uri -> uri.AbsolutePath |> > System.IO.Path.GetFullPath > │ > | _ -> failwith "invalid uri" > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### getCompilerPort > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let getCompilerPort () = > │ > 13805 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### serialize_obj > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let serializeObj obj = > │ > try > │ > obj > │ > |> FSharp.Json.Json.serialize > │ > |> SpiralSm.replace "\\\\" "\\" > │ > |> SpiralSm.replace "\\r\\n" "\n" > │ > |> SpiralSm.replace "\\n" "\n" > │ > with ex -> > │ > trace Critical (fun () -> > "Supervisor.serialize_obj / obj: %A{obj}") > │ > _locals > │ > "" > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### Backend > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type Backend = > │ > | Fsharp > │ > | Cuda > │ > | Gleam > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #r > │ > > @"../../../../../../../.nuget/packages/fsharpx.collections/3.1.0/lib/netstandard > │ > 2.0/FSharpx.Collections.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.Core > │ > .dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > │ > arsec.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > │ > arsecCS.dll" > │ > > │ > > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll > │ > " > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstracti > │ > ons.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstractions. > │ > dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions. > │ > dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll" > │ > #endif > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.extensions.logging/9.0.0/lib/ne > │ > t9.0/Microsoft.Extensions.Logging.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.extensions.logging.abstractions > │ > > /9.0.0/lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.extensions.dependencyinjection. > │ > > abstractions/9.0.0/lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstracti > │ > ons.dll" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #r > │ > > @"../../../../../../../.nuget/packages/system.management/9.0.0/lib/netstandard2. > │ > 0/System.Management.dll" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > ── [ 1.84m - diagnostics ] > ───────────────────────────────────────────────────── > │ > │ input.fsx (10087,85)-(10087,88) > typecheck warning This and > │ > other recursive references to the object(s) being defined > will be checked for > │ > initialization-soundness at runtime through the use of a > delayed reference. This > │ > is because you are defining one or more recursive objects, > rather than recursive > │ > functions. This warning may be suppressed by using '#nowarn > "40"' or > │ > '--nowarn:40'. > │ > │ input.fsx (10612,85)-(10612,88) > typecheck warning This and > │ > other recursive references to the object(s) being defined > will be checked for > │ > initialization-soundness at runtime through the use of a > delayed reference. This > │ > is because you are defining one or more recursive objects, > rather than recursive > │ > functions. This warning may be suppressed by using '#nowarn > "40"' or > │ > '--nowarn:40'. > │ > │ input.fsx (11436,43)-(11436,49) > typecheck warning This and > │ > other recursive references to the object(s) being defined > will be checked for > │ > initialization-soundness at runtime through the use of a > delayed reference. This > │ > is because you are defining one or more recursive objects, > rather than recursive > │ > functions. This warning may be suppressed by using '#nowarn > "40"' or > │ > '--nowarn:40'. > │ > │ input.fsx (12366,43)-(12366,49) > typecheck warning This and > │ > other recursive references to the object(s) being defined > will be checked for > │ > initialization-soundness at runtime through the use of a > delayed reference. This > │ > is because you are defining one or more recursive objects, > rather than recursive > │ > functions. This warning may be suppressed by using '#nowarn > "40"' or > │ > '--nowarn:40'. > │ > │ input.fsx (13032,71)-(13032,74) > typecheck warning This and > │ > other recursive references to the object(s) being defined > will be checked for > │ > initialization-soundness at runtime through the use of a > delayed reference. This > │ > is because you are defining one or more recursive objects, > rather than recursive > │ > functions. This warning may be suppressed by using '#nowarn > "40"' or > │ > '--nowarn:40'. > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > open spiral_compiler > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### awaitCompiler > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let awaitCompiler port cancellationToken = async { > │ > let host = "127.0.0.1" > │ > let struct (ct, disposable) = cancellationToken |> > │ > SpiralThreading.new_disposable_token > │ > let! ct = ct |> > SpiralAsync.merge_cancellation_token_with_default_async > │ > > │ > let compiler = MailboxProcessor.Start (fun inbox -> > async { > │ > let! availablePort = > SpiralNetworking.get_available_port (Some 180) host > │ > port > │ > if availablePort <> port then > │ > inbox.Post (port, false) > │ > else > │ > let compilerDir = > │ > workspaceRoot </> > "deps/spiral/apps/compiler/dist" > │ > |> System.IO.Path.GetFullPath > │ > > │ > let compilerPath = compilerDir </> > │ > $"spiral_compiler{SpiralPlatform.get_executable_suffix ()}" > │ > > │ > let! exitCode, result = > │ > SpiralRuntime.execution_options (fun x -> > │ > { x with > │ > l0 = $"\"{compilerPath}\" --port > {availablePort} > │ > --default-int i32 --default-float f64" > │ > l1 = Some ct > │ > l3 = Some (fun struct (_, line, _) > -> async { > │ > if line |> SpiralSm.contains > │ > $"System.IO.IOException: Failed to bind to address > http://{host}:{port}: address > │ > already in use." then > │ > inbox.Post (port, false) > │ > > │ > if line |> SpiralSm.contains > $"Server bound to: > │ > http://localhost:{availablePort}" then > │ > let rec loop retry = async > { > │ > do! > │ > > SpiralNetworking.wait_for_port_access > │ > (Some 100) true host availablePort > │ > |> > Async.runWithTimeoutAsync 500 > │ > |> Async.Ignore > │ > > │ > let _locals () = > $"port: {availablePort} / > │ > retry: {retry} / {_locals ()}" > │ > try > │ > let pingObj = {| > Ping = true |} > │ > let! pingResult = > pingObj |> sendObj > │ > availablePort > │ > trace Verbose (fun > () -> > │ > $"Supervisor.awaitCompiler / Ping / result: > '%A{pingResult}'") _locals > │ > > │ > match pingResult > with > │ > | Some _ -> > inbox.Post (availablePort, > │ > true) > │ > | None -> do! loop > (retry + 1) > │ > with ex -> > │ > trace Verbose (fun > () -> > │ > $"Supervisor.awaitCompiler / Ping / ex: {ex |> > SpiralSm.format_exception}") > │ > _locals > │ > do! loop (retry + > 1) > │ > } > │ > do! loop 1 > │ > }) > │ > l6 = Some workspaceRoot > │ > } > │ > ) > │ > |> SpiralRuntime.execute_with_options_async > │ > > │ > trace Debug (fun () -> > $"Supervisor.awaitCompiler / exitCode: > │ > {exitCode} / result: {result}") _locals > │ > disposable.Dispose () > │ > }, ct) > │ > > │ > let! serverPort, managed = compiler.Receive () > │ > > │ > let connection = > │ > > HubConnectionBuilder().WithUrl($"http://{host}:{serverPort}").Build () > │ > do! connection.StartAsync () |> Async.AwaitTask > │ > > │ > let event = Event<_> () > │ > let disposable' = connection.On<string> > ("ServerToClientMsg", event.Trigger) > │ > let stream = > │ > FSharp.Control.AsyncSeq.unfoldAsync > │ > (fun () -> async { > │ > let! msg = event.Publish |> > Async.AwaitEvent > │ > return Some (msg |> > │ > FSharp.Json.Json.deserialize<ClientErrorsRes>, ()) > │ > }) > │ > () > │ > > │ > let disposable' = > │ > new_disposable (fun () -> > │ > async { > │ > disposable'.Dispose () > │ > do! connection.StopAsync () |> > Async.AwaitTask > │ > disposable.Dispose () > │ > if managed > │ > then do! > │ > SpiralNetworking.wait_for_port_access > (Some 100) false host > │ > serverPort > │ > |> Async.runWithTimeoutAsync 1500 > │ > |> Async.Ignore > │ > } > │ > |> Async.RunSynchronously > │ > ) > │ > > │ > return > │ > serverPort, > │ > stream, > │ > ct, > │ > disposable' > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > open Hopac > │ > open Hopac.Infixes > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### server > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let server1 = new_server<Job<unit>, obj, string option, > Job<unit>, unit> () > │ > let server2 = new_server<Job<unit>, obj, int array, > Job<unit>, unit> () > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > ── [ 237.99ms - diagnostics ] > ────────────────────────────────────────────────── > │ > │ input.fsx (1,15)-(1,25) typecheck > warning The method or > │ > function 'new_server' should not be given explicit type > argument(s) because it > │ > does not declare its type parameters explicitly > │ > │ input.fsx (2,15)-(2,25) typecheck > warning The method or > │ > function 'new_server' should not be given explicit type > argument(s) because it > │ > does not declare its type parameters explicitly > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### buildFile > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let buildFile backend timeout port cancellationToken path = > │ > let rec loop retry = async { > │ > let fullPath = path |> System.IO.Path.GetFullPath > |> > │ > SpiralFileSystem.normalize_path > │ > let fileDir = fullPath |> > System.IO.Path.GetDirectoryName > │ > let fileName = fullPath |> > System.IO.Path.GetFileNameWithoutExtension > │ > let! code = fullPath |> > SpiralFileSystem.read_all_text_async > │ > > │ > // let stream, disposable = fileDir |> > FileSystem.watchDirectory (fun _ > │ > -> true) > │ > // use _ = disposable > │ > > │ > let struct (token, disposable) = > SpiralThreading.new_disposable_token > │ > cancellationToken > │ > use _ = disposable > │ > > │ > let outputFileName = > │ > match backend with > │ > | Fsharp -> $"{fileName}.fsx" > │ > | Cuda -> $"{fileName}.py" > │ > | Gleam -> $"{fileName}.gleam" > │ > > │ > // let outputContentSeq = > │ > // stream > │ > // |> FSharp.Control.AsyncSeq.chooseAsync > (function > │ > // | _, > (FileSystem.FileSystemChange.Changed (path, Some text)) > │ > // when (path |> > System.IO.Path.GetFileName) = > │ > outputFileName > │ > // -> > │ > // // fileDir </> path |> > │ > SpiralFileSystem.read_all_text_retry_async > │ > // text |> Some |> Async.init > │ > // | _ -> None |> Async.init > │ > // ) > │ > // |> FSharp.Control.AsyncSeq.map (fun content > -> > │ > // Some (content |> SpiralSm.replace "\r\n" > "\n"), None > │ > // ) > │ > > │ > let printErrorData (data : {| uri : string; errors > : RString list |}) = > │ > let fileName = data.uri |> > System.IO.Path.GetFileName > │ > let errors = > │ > data.errors > │ > |> List.map snd > │ > |> SpiralSm.concat "\n" > │ > $"{fileName}:\n{errors}" > │ > > │ > > │ > let port = port |> Option.defaultWith > getCompilerPort > │ > // let! serverPort, errors, ct, disposable = > awaitCompiler port (Some > │ > token) > │ > let serverPort = port > │ > // use _ = disposable > │ > > │ > let errorsSeq = > │ > server1.errors > │ > |> FSharp.Control.AsyncSeq.choose (fun error -> > │ > match error with > │ > | FatalError message -> > │ > Some (message, error) > │ > | TracedError data -> > │ > Some (data.message, error) > │ > | PackageErrors data when data.errors |> > List.isEmpty |> not -> > │ > Some (data |> printErrorData, error) > │ > | TokenizerErrors data when data.errors |> > List.isEmpty |> not > │ > -> > │ > Some (data |> printErrorData, error) > │ > | ParserErrors data when data.errors |> > List.isEmpty |> not -> > │ > Some (data |> printErrorData, error) > │ > | TypeErrors data when data.errors |> > List.isEmpty |> not -> > │ > Some (data |> printErrorData, error) > │ > | _ -> None > │ > ) > │ > |> FSharp.Control.AsyncSeq.map (fun (message, > error) -> > │ > None, Some (message, error) > │ > ) > │ > > │ > let timerSeq = > │ > 500 > │ > |> FSharp.Control.AsyncSeq.intervalMs > │ > |> FSharp.Control.AsyncSeq.map (fun _ -> None, > None) > │ > > │ > let compilerEvent = Event<option<string> * > option<string * > │ > ClientErrorsRes>> () > │ > // let disposable' = connection.On<string> > ("ServerToClientMsg", > │ > event.Trigger) > │ > let outputContentSeq = > │ > FSharp.Control.AsyncSeq.unfoldAsync > │ > (fun () -> async { > │ > let! msg = compilerEvent.Publish |> > Async.AwaitEvent > │ > trace Verbose (fun () -> > $"Supervisor.buildFile / > │ > outputContentSeq unfoldAsync / msg: %A{msg}") _locals > │ > return Some (msg, ()) > │ > }) > │ > () > │ > > │ > let compilerEvent2 = Event<option<string> * (string > * ClientErrorsRes) > │ > list * int> () > │ > // let disposable' = connection.On<string> > ("ServerToClientMsg", > │ > event.Trigger) > │ > let outputContentSeq2 = > │ > FSharp.Control.AsyncSeq.unfoldAsync > │ > (fun () -> async { > │ > let! msg = compilerEvent2.Publish |> > Async.AwaitEvent > │ > trace Verbose (fun () -> > $"Supervisor.buildFile / > │ > outputContentSeq2 unfoldAsync / msg: %A{msg}") _locals > │ > return Some (msg, ()) > │ > }) > │ > () > │ > > │ > let outputSeq = > │ > [[ outputContentSeq; errorsSeq; timerSeq ]] > │ > // [[ errorsSeq; timerSeq ]] > │ > |> FSharp.Control.AsyncSeq.mergeAll > │ > > │ > let! outputChild = > │ > ((None, [[]], 0), outputSeq) > │ > ||> FSharp.Control.AsyncSeq.scan ( > │ > fun (outputContentResult, errors, > typeErrorCount) > │ > (outputContent, error) -> > │ > trace Verbose (fun () -> > $"Supervisor.buildFile / > │ > AsyncSeq.scan / outputContent:\n'{outputContent |> > Option.map > │ > (SpiralSm.ellipsis_end 1500)} / errors: {errors |> > serializeObj} / > │ > outputContentResult: {outputContentResult} / > typeErrorCount: {typeErrorCount} / > │ > retry: {retry} / error: {error} / path: {path}'") _locals > │ > match outputContent, error with > │ > | Some outputContent, None -> Some > outputContent, errors, > │ > typeErrorCount > │ > | None, Some ( > │ > _, > │ > FatalError "File main has a type > error somewhere in its > │ > path." > │ > ) -> > │ > outputContentResult, errors, > typeErrorCount + 1 > │ > | None, Some error -> > outputContentResult, error :: errors, > │ > typeErrorCount > │ > | None, None when typeErrorCount >= 1 > -> > │ > outputContentResult, errors, > typeErrorCount + 1 > │ > | _ -> outputContentResult, errors, > typeErrorCount > │ > ) > │ > |> FSharp.Control.AsyncSeq.takeWhileInclusive > (fun (outputContent, > │ > errors, typeErrorCount) -> > │ > trace > │ > Verbose > │ > (fun () -> $"Supervisor.buildFile / > takeWhileInclusive / > │ > outputContent:\n'{outputContent |> Option.map > (SpiralSm.ellipsis_end 1500)}' / > │ > errors: {errors |> serializeObj} / typeErrorCount: > {typeErrorCount} / retry: > │ > {retry} / path: {path}") > │ > _locals > │ > #if INTERACTIVE > │ > let errorWait = 1 > │ > #else > │ > let errorWait = 1 > │ > #endif > │ > match outputContent, errors with > │ > | None, [[]] when typeErrorCount > > errorWait -> false > │ > | _, [[ message, TypeErrors errors ]] -> > │ > compilerEvent.Trigger (None, Some > (message, TypeErrors > │ > errors)) > │ > trace Verbose (fun () -> > $"Supervisor.buildFile / > │ > takeWhileInclusive / TypeErrors trigger") _locals > │ > false > │ > | None, [[]] -> true > │ > | _ -> false > │ > ) > │ > |> FSharp.Control.AsyncSeq.tryLast > │ > // |> Async.withCancellationToken ct > │ > |> Async.catch > │ > |> Async.runWithTimeoutAsync timeout > │ > |> Async.StartChild > │ > > │ > // do! Async.Sleep 60 > │ > > │ > let fullPathUri = fullPath |> > SpiralFileSystem.normalize_path |> > │ > SpiralFileSystem.new_file_uri > │ > > │ > trace Verbose (fun () -> $"Supervisor.buildFile / > fullPathUri: > │ > %A{fullPathUri}") (fun () -> "") > │ > > │ > // let fileOpenObj = {| FileOpen = {| uri = > fullPathUri; spiText = code > │ > |} |} > │ > > │ > // let! _fileOpenResult = fileOpenObj |> sendObj > serverPort > │ > let fileOpenArgs = {| uri = fullPathUri; spiText = > code |} > │ > let! _fileOpenResult = > │ > server1.job_null (server1.supervisor *<+ > SupervisorReq.FileOpen > │ > fileOpenArgs) > │ > |> Async.AwaitTask > │ > |> Async.runWithTimeoutAsync 60000 > │ > |> Async.map Option.get > │ > trace Verbose (fun () -> $"Supervisor.buildFile / > _fileOpenResult: > │ > %A{_fileOpenResult}") (fun () -> "") > │ > > │ > // let! _fileOpenResult = fileOpenObj |> sendObj > serverPort > │ > > │ > // do! Async.Sleep 60 > │ > > │ > let backendId = > │ > match backend with > │ > | Fsharp -> "Fsharp" > │ > | Cuda -> "Python + Cuda" > │ > | Gleam -> "Gleam" > │ > // let buildFileObj = {| BuildFile = {| uri = > fullPathUri; backend = > │ > backendId |} |} > │ > > │ > // let backend = Supervisor.Fsharp > │ > let buildFileArgs = {| uri = fullPathUri; backend = > backendId |} > │ > let buildFileResultAsync = > │ > server1.job_val (fun res -> server1.supervisor > *<+ > │ > SupervisorReq.BuildFile(buildFileArgs,res)) > │ > |> Async.AwaitTask > │ > |> Async.runWithTimeoutAsync timeout > │ > |> Async.map Option.get > │ > > │ > let buildFileResultAsync = async { > │ > let! buildFileResult = buildFileResultAsync > │ > let buildFileResult = > │ > if buildFileResult = "" || buildFileResult > = null > │ > then None > │ > else buildFileResult |> SpiralSm.replace > "\r\n" "\n" |> Some > │ > trace Verbose (fun () -> $"Supervisor.buildFile > / buildFileResult: > │ > %A{buildFileResult}") (fun () -> "") > │ > if buildFileResult.IsSome then > │ > compilerEvent2.Trigger (buildFileResult, > [[]], 0) > │ > return buildFileResult, [[]], 0 > │ > } > │ > > │ > let resultAsync = > │ > outputChild > │ > |> Async.map (fun x -> > │ > trace Verbose (fun () -> > $"Supervisor.buildFile / outputChild / > │ > x: %A{x}") _locals > │ > match x with > │ > | Some (Ok (Some (outputCode, errors, > typeErrorCount))) -> > │ > let x = > │ > match errors with > │ > | [[ message, TypeErrors errors ]] > -> > │ > trace Verbose (fun () -> > $"Supervisor.buildFile / > │ > outputChild |> Async.map") _locals > │ > compilerEvent2.Trigger (None, > [[ message, TypeErrors > │ > errors ]], 0) > │ > trace Verbose (fun () -> > $"Supervisor.buildFile / > │ > outputChild |> Async.map") _locals > │ > | _ -> () > │ > outputCode, errors |> List.distinct |> > List.rev, > │ > typeErrorCount > │ > | Some (Error ex) -> > │ > trace Critical (fun () -> > $"Supervisor.buildFile / error: > │ > {ex |> SpiralSm.format_exception} / retry: {retry}") > _locals > │ > None, [[]], 0 > │ > | _ -> None, [[]], 0 > │ > ) > │ > > │ > trace Verbose (fun () -> $"Supervisor.buildFile / > before result: > │ > %A{()}") (fun () -> "") > │ > > │ > // let resultSeq = > │ > // [[| buildFileResultAsync; resultAsync |]] > │ > // |> FSharp.Control.AsyncSeq.ofSeqAsync > │ > > │ > > │ > let buildFileResultSeq = [[| buildFileResultAsync > |]] |> > │ > FSharp.Control.AsyncSeq.ofSeqAsync > │ > let resultSeq = [[| resultAsync |]] |> > │ > FSharp.Control.AsyncSeq.ofSeqAsync > │ > > │ > let resultSeq = > │ > [[ outputContentSeq2; buildFileResultSeq; > resultSeq ]] > │ > |> FSharp.Control.AsyncSeq.mergeAll > │ > > │ > let! buildFileResult, result, typeErrorCount = > │ > resultSeq > │ > // |> FSharp.Control.AsyncSeq.collect > (Array.singleton >> > │ > FSharp.Control.AsyncSeq.ofSeq) > │ > |> FSharp.Control.AsyncSeq.collect (fun x -> > │ > trace Verbose (fun () -> > $"Supervisor.buildFile / ofSeqAsync / > │ > x: %A{x}") _locals > │ > match x with > │ > | Some _, _, _ as x -> [[| x |]] > │ > | _, _ :: _, _ as x -> [[| x |]] > │ > | _ -> [[||]] > │ > |> FSharp.Control.AsyncSeq.ofSeq > │ > ) > │ > |> FSharp.Control.AsyncSeq.tryFirst > │ > |> Async.map Option.get > │ > > │ > trace Verbose (fun () -> $"Supervisor.buildFile / > result: %A{result} / > │ > buildFileResult: %A{buildFileResult} / typeErrorCount: > {typeErrorCount}") (fun > │ > () -> "") > │ > > │ > match buildFileResult with > │ > // | None when typeErrorCount > 0 && retry = 0 -> > │ > // trace Verbose (fun () -> > $"Supervisor.buildFile / result: > │ > {result} / retry: {retry} / typeErrorCount: > {typeErrorCount} / fileDir: > │ > {fileDir} / targetDir: {targetDir}") _locals > │ > // return! loop (retry + 1) > │ > | _ -> > │ > let targetDir = workspaceRoot </> "target" > │ > trace Verbose (fun () -> $"Supervisor.buildFile > / retry: {retry} / > │ > typeErrorCount: {typeErrorCount} / fileDir: {fileDir} / > targetDir: {targetDir}") > │ > _locals > │ > if fileDir |> SpiralSm.starts_with targetDir > then > │ > let fileDirUri = fileDir |> > SpiralFileSystem.normalize_path |> > │ > SpiralFileSystem.new_file_uri > │ > > │ > // let fileDeleteObj = {| FileDelete = {| > uris = [[| fileDirUri > │ > |]] |} |} > │ > // let! _fileDeleteResult = fileDeleteObj > |> sendObj serverPort > │ > let fileDeleteArgs = {| uris = [[| > fileDirUri |]] |} > │ > let! _fileDeleteResult = > │ > server1.job_null (server1.supervisor > *<+ > │ > SupervisorReq.FileDelete fileDeleteArgs) > │ > |> Async.AwaitTask > │ > () > │ > > │ > let outputPath = fileDir </> outputFileName > │ > return outputPath, buildFileResult, result > │ > } > │ > loop 0 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### SpiralInput > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type SpiralInput = > │ > | Spi of string * string option > │ > | Spir of string > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### persistCode > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let persistCode (input: {| backend : Backend option; input: > SpiralInput; > │ > packages: string [[]] |}) = async { > │ > let targetDir = workspaceRoot </> "target/spiral_Eval" > │ > > │ > let packagesDir = targetDir </> "packages" > │ > > │ > let hashHex = $"%A{input.backend}%A{input.input}" |> > SpiralCrypto.hash_text > │ > > │ > let packageDir = packagesDir </> hashHex > │ > > │ > let packageDir = > │ > if input.backend = Some Gleam > │ > then packageDir </> "src" > │ > else packageDir > │ > > │ > packageDir |> System.IO.Directory.CreateDirectory |> > ignore > │ > > │ > let moduleName = "main" > │ > > │ > let spirModule, spiModule = > │ > match input.input with > │ > | Spi (_spi, Some _spir) -> true, true > │ > | Spi (_spi, None) -> false, true > │ > | Spir _spir -> true, false > │ > |> fun (spir, spi) -> > │ > (if spir then $"{moduleName}_real*-" else ""), > │ > if spi then moduleName else "" > │ > > │ > let libLinkTargetPath = workspaceRoot </> > "../spiral/lib/spiral" > │ > let libLinkPath = packageDir </> "spiral" > │ > > │ > let packagesModule = > │ > input.packages > │ > |> Array.map (fun package -> > │ > let path = workspaceRoot </> package > │ > let packageName = path |> > System.IO.Path.GetFileName > │ > let libLinkPath = packageDir </> packageName > │ > libLinkPath |> SpiralFileSystem.link_directory > path > │ > $"{packageName}-" > │ > ) > │ > |> String.concat "\n " > │ > > │ > let packageDir' = > │ > if input.packages |> Array.isEmpty > │ > then workspaceRoot </> "../spiral/lib" > │ > else > │ > libLinkPath |> SpiralFileSystem.link_directory > libLinkTargetPath > │ > packageDir > │ > > │ > let spiprojPath = packageDir </> "package.spiproj" > │ > let spiprojCode = > │ > $"""packageDir: {packageDir'} > │ > packages: > │ > |core- > │ > spiral- > │ > {packagesModule} > │ > modules: > │ > {spirModule} > │ > {spiModule} > │ > """ > │ > do! spiprojCode |> > SpiralFileSystem.write_all_text_exists spiprojPath > │ > > │ > let spirPath = packageDir </> $"{moduleName}_real.spir" > │ > let spiPath = packageDir </> $"{moduleName}.spi" > │ > > │ > let spirCode, spiCode = > │ > match input.input with > │ > | Spi (spi, Some spir) -> Some spir, Some spi > │ > | Spi (spi, None) -> None, Some spi > │ > | Spir spir -> Some spir, None > │ > > │ > match spirCode with > │ > | Some spir -> do! spir |> > SpiralFileSystem.write_all_text_exists spirPath > │ > | None -> () > │ > match spiCode with > │ > | Some spi -> do! spi |> > SpiralFileSystem.write_all_text_exists spiPath > │ > | None -> () > │ > > │ > let spiralPath = > │ > match input.input with > │ > | Spi _ -> spiPath > │ > | Spir _ -> spirPath > │ > match input.backend with > │ > | None -> return spiralPath, None > │ > | Some backend -> > │ > let outputFileName = > │ > let fileName = > │ > match input.input with > │ > | Spi _ -> moduleName > │ > | Spir _ -> $"{moduleName}_real" > │ > match backend with > │ > | Fsharp -> $"{fileName}.fsx" > │ > | Cuda -> $"{fileName}.py" > │ > | Gleam -> $"{fileName}.gleam" > │ > let outputPath = packageDir </> outputFileName > │ > if outputPath |> System.IO.File.Exists |> not > │ > then return spiralPath, None > │ > else > │ > let! oldCode = spiralPath |> > SpiralFileSystem.read_all_text_async > │ > if oldCode <> (spiCode |> Option.defaultValue > (spirCode |> > │ > Option.defaultValue "")) > │ > then return spiralPath, None > │ > else > │ > let! outputCode = outputPath |> > │ > SpiralFileSystem.read_all_text_async > │ > return spiralPath, Some (outputPath, > outputCode |> > │ > SpiralSm.replace "\r\n" "\n") > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### buildCode > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let buildCode backend packages isCache timeout > cancellationToken input = async { > │ > let! mainPath, outputCache = > │ > persistCode {| input = input; backend = Some > backend; packages = > │ > packages |} > │ > match outputCache with > │ > | Some (outputPath, outputCode) when isCache -> return > mainPath, > │ > (outputPath, Some outputCode), [[]] > │ > | _ -> > │ > let! outputPath, outputCode, errors = mainPath |> > buildFile backend > │ > timeout None cancellationToken > │ > return mainPath, (outputPath, outputCode), errors > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > │ > """inl app () = > │ > console.write_line "text" > │ > 1i32 > │ > > │ > inl main () = > │ > app > │ > |> dyn > │ > |> ignore > │ > """ > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Fsharp [[||]] false 20000 None > │ > |> Async.runWithTimeout 21000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > Some """let rec closure1 () () : unit = > │ > let v0 : (string -> unit) = System.Console.WriteLine > │ > let v1 : string = "text" > │ > v0 v1 > │ > and closure0 () () : int32 = > │ > let v3 : unit = () > │ > let v4 : (unit -> unit) = closure1() > │ > let v5 : unit = (fun () -> v4 (); v3) () > │ > 1 > │ > let v0 : (unit -> int32) = closure0() > │ > () > │ > """, > │ > [[]] > │ > ) > │ > ) > │ > > │ > ── [ 3.74s - stdout ] > ────────────────────────────────────────────────────────── > │ > │ 00:01:59 v #1 Supervisor.buildFile > / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/22ccd04317d5605c65f81c > │ > 7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi" > │ > │ 00:01:59 v #2 Supervisor.buildFile > / _fileOpenResult: > │ > <null> > │ > │ 00:01:59 v #3 Supervisor.buildFile > / before result: () > │ > │ 00:01:59 v #4 Supervisor.buildFile > / takeWhileInclusive > │ > / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi > │ > │ 00:01:59 v #5 Supervisor.buildFile > / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi' > │ > │ 00:01:59 v #6 Supervisor.buildFile > / takeWhileInclusive > │ > / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi > │ > │ 00:02:00 v #532 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi' > │ > │ 00:02:00 v #533 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi > │ > │ 00:02:00 v #776 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi' > │ > │ 00:02:00 v #777 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi > │ > │ 00:02:01 v #1008 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi' > │ > │ 00:02:01 v #1009 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi > │ > │ 00:02:01 v #1143 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi' > │ > │ 00:02:01 v #1144 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi > │ > │ 00:02:02 v #1317 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi' > │ > │ 00:02:02 v #1318 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi > │ > │ 00:02:02 v #1333 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi' > │ > │ 00:02:02 v #1334 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6\main.spi > │ > │ 00:02:02 v #1335 > Supervisor.buildFile / buildFileResult: > │ > Some > │ > │ "let rec closure1 () () : unit = > │ > │ let v0 : (string -> unit) = > System.Console.WriteLine > │ > │ let v1 : string = "text" > │ > │ v0 v1 > │ > │ and closure0 () () : int32 = > │ > │ let v3 : unit = () > │ > │ let v4 : (unit -> unit) = closure1() > │ > │ let v5 : unit = (fun () -> v4 (); > v3) () > │ > │ 1 > │ > │ let v0 : (unit -> int32) = closure0() > │ > │ () > │ > │ " > │ > │ 00:02:02 v #1336 > Supervisor.buildFile / > │ > outputContentSeq2 unfoldAsync / msg: (Some > │ > │ "let rec closure1 () () : unit = > │ > │ let v0 : (string -> unit) = > System.Console.WriteLine > │ > │ let v1 : string = "text" > │ > │ v0 v1 > │ > │ and closure0 () () : int32 = > │ > │ let v3 : unit = () > │ > │ let v4 : (unit -> unit) = closure1() > │ > │ let v5 : unit = (fun () -> v4 (); > v3) () > │ > │ 1 > │ > │ let v0 : (unit -> int32) = closure0() > │ > │ () > │ > │ ", > │ > │ [], 0) > │ > │ 00:02:02 v #1337 > Supervisor.buildFile / ofSeqAsync / x: > │ > (Some > │ > │ "let rec closure1 () () : unit = > │ > │ let v0 : (string -> unit) = > System.Console.WriteLine > │ > │ let v1 : string = "text" > │ > │ v0 v1 > │ > │ and closure0 () () : int32 = > │ > │ let v3 : unit = () > │ > │ let v4 : (unit -> unit) = closure1() > │ > │ let v5 : unit = (fun () -> v4 (); > v3) () > │ > │ 1 > │ > │ let v0 : (unit -> int32) = closure0() > │ > │ () > │ > │ ", > │ > │ [], 0) > │ > │ 00:02:02 v #1338 > Supervisor.buildFile / result: [] / > │ > buildFileResult: Some > │ > │ "let rec closure1 () () : unit = > │ > │ let v0 : (string -> unit) = > System.Console.WriteLine > │ > │ let v1 : string = "text" > │ > │ v0 v1 > │ > │ and closure0 () () : int32 = > │ > │ let v3 : unit = () > │ > │ let v4 : (unit -> unit) = closure1() > │ > │ let v5 : unit = (fun () -> v4 (); > v3) () > │ > │ 1 > │ > │ let v0 : (unit -> int32) = closure0() > │ > │ () > │ > │ " / typeErrorCount: 0 > │ > │ 00:02:02 v #1339 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\22ccd04317d5605c65f81c7f777766f > │ > 357e85dc69f2d6d04b9dc60aebd08a0d6 / targetDir: > c:/home/git\polyglot\target > │ > │ Some > │ > │ (Some > │ > │ "let rec closure1 () () : unit = > │ > │ let v0 : (string -> unit) = > System.Console.WriteLine > │ > │ let v1 : string = "text" > │ > │ v0 v1 > │ > │ and closure0 () () : int32 = > │ > │ let v3 : unit = () > │ > │ let v4 : (unit -> unit) = closure1() > │ > │ let v5 : unit = (fun () -> v4 (); > v3) () > │ > │ 1 > │ > │ let v0 : (unit -> int32) = closure0() > │ > │ () > │ > │ ", > │ > │ []) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > """ > │ > inl init_series start end inc = > │ > inl total : f64 = conv ((end - start) / inc) + 1 > │ > listm.init total (conv >> (*) inc >> (+) start) : list > f64 > │ > > │ > type integration = (f64 -> f64) -> f64 -> f64 -> f64 > │ > > │ > inl integral dt : integration = > │ > fun f a b => > │ > init_series (a + dt / 2) (b - dt / 2) dt > │ > |> listm.map (f >> (*) dt) > │ > |> listm.fold (+) 0 > │ > > │ > inl main () = > │ > integral 0.1 (fun x => x ** 2) 0 1 > │ > """ > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Fsharp [[||]] false 10000 None > │ > |> Async.runWithTimeout 11000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > Some "0.3325000000000001\n", > │ > [[]] > │ > ) > │ > ) > │ > > │ > ── [ 680.59ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:02:03 v #1342 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e9312 > │ > a6aad9129ffd3cbd56ac7f0327106f1db\main.spi > │ > │ 00:02:03 v #1343 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e9312 > │ > a6aad9129ffd3cbd56ac7f0327106f1db\main.spi' > │ > │ 00:02:03 v #1344 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e9312 > │ > a6aad9129ffd3cbd56ac7f0327106f1db\main.spi > │ > │ 00:02:03 v #1345 > Supervisor.buildFile / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c127414de2a2a92d9fd93e > │ > a5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi" > │ > │ 00:02:03 v #1346 > Supervisor.buildFile / _fileOpenResult: > │ > <null> > │ > │ 00:02:03 v #1347 > Supervisor.buildFile / before result: > │ > () > │ > │ 00:02:03 v #1583 > Supervisor.buildFile / buildFileResult: > │ > Some "0.3325000000000001 > │ > │ " > │ > │ 00:02:03 v #1584 > Supervisor.buildFile / > │ > outputContentSeq2 unfoldAsync / msg: (Some > "0.3325000000000001 > │ > │ ", [], 0) > │ > │ 00:02:03 v #1585 > Supervisor.buildFile / ofSeqAsync / x: > │ > (Some "0.3325000000000001 > │ > │ ", [], 0) > │ > │ 00:02:03 v #1586 > Supervisor.buildFile / result: [] / > │ > buildFileResult: Some "0.3325000000000001 > │ > │ " / typeErrorCount: 0 > │ > │ 00:02:03 v #1587 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\c127414de2a2a92d9fd93ea5a8e9312 > │ > a6aad9129ffd3cbd56ac7f0327106f1db / targetDir: > c:/home/git\polyglot\target > │ > │ Some (Some "0.3325000000000001 > │ > │ ", []) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > """ > │ > inl init_series start end inc = > │ > inl total : f64 = conv ((end - start) / inc) + 1 > │ > listm.init total (conv >> (*) inc >> (+) start) : list > f64 > │ > > │ > type integration = (f64 -> f64) -> f64 -> f64 -> f64 > │ > > │ > inl integral dt : integration = > │ > fun f a b => > │ > init_series (a + dt / 2) (b - dt / 2) dt > │ > |> listm.map (f >> (*) dt) > │ > |> listm.fold (+) 0 > │ > > │ > inl main () = > │ > integral 0.1 (fun x => x ** 2) 0 1 > │ > """ > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Cuda [[||]] false 10000 None > │ > |> Async.runWithTimeout 11000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > Some @"kernel = r"""""" > │ > """""" > │ > class static_array(): > │ > def __init__(self, length): > │ > self.ptr = [[]] > │ > for _ in range(length): > │ > self.ptr.append(None) > │ > > │ > def __getitem__(self, index): > │ > assert 0 <= index < len(self.ptr), ""The get index > needs to be in > │ > range."" > │ > return self.ptr[[index]] > │ > > │ > def __setitem__(self, index, value): > │ > assert 0 <= index < len(self.ptr), ""The set index > needs to be in > │ > range."" > │ > self.ptr[[index]] = value > │ > > │ > class static_array_list(static_array): > │ > def __init__(self, length): > │ > super().__init__(length) > │ > self.length = 0 > │ > > │ > def __getitem__(self, index): > │ > assert 0 <= index < self.length, ""The get index > needs to be in range."" > │ > return self.ptr[[index]] > │ > > │ > def __setitem__(self, index, value): > │ > assert 0 <= index < self.length, ""The set index > needs to be in range."" > │ > self.ptr[[index]] = value > │ > > │ > def push(self,value): > │ > assert (self.length < len(self.ptr)), ""The length > before pushing has to > │ > be less than the maximum length of the array."" > │ > self.ptr[[self.length]] = value > │ > self.length += 1 > │ > > │ > def pop(self): > │ > assert (0 < self.length), ""The length before > popping has to be greater > │ > than 0."" > │ > self.length -= 1 > │ > return self.ptr[[self.length]] > │ > > │ > def unsafe_set_length(self,i): > │ > assert 0 <= i <= len(self.ptr), ""The new length > has to be in range."" > │ > self.length = i > │ > > │ > class dynamic_array(static_array): > │ > pass > │ > > │ > class dynamic_array_list(static_array_list): > │ > def length_(self): return self.length > │ > > │ > import cupy as cp > │ > import numpy as np > │ > from dataclasses import dataclass > │ > from typing import NamedTuple, Union, Callable, Tuple > │ > i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = > int; u32 = int; u64 = > │ > int; f32 = float; f64 = float; char = str; string = str > │ > cuda = False > │ > > │ > def main_body(): > │ > return 0.3325000000000001 > │ > > │ > def main(): > │ > r = main_body() > │ > if cuda: cp.cuda.get_current_stream().synchronize() # > This line is here so > │ > the `__trap()` calls on the kernel aren't missed. > │ > return r > │ > > │ > if __name__ == '__main__': result = main(); None if result > is None else > │ > print(result) > │ > ", > │ > [[]] > │ > ) > │ > ) > │ > > │ > ── [ 760.73ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:02:03 v #1592 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f97fdc > │ > 056ee1f21be4a24b26e8533ec368831c8\main.spi > │ > │ 00:02:03 v #1593 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f97fdc > │ > 056ee1f21be4a24b26e8533ec368831c8\main.spi' > │ > │ 00:02:03 v #1594 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\ca288d6928a8e761855210f25f97fdc > │ > 056ee1f21be4a24b26e8533ec368831c8\main.spi > │ > │ 00:02:03 v #1595 > Supervisor.buildFile / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/ca288d6928a8e761855210 > │ > f25f97fdc056ee1f21be4a24b26e8533ec368831c8/main.spi" > │ > │ 00:02:03 v #1596 > Supervisor.buildFile / _fileOpenResult: > │ > <null> > │ > │ 00:02:03 v #1597 > Supervisor.buildFile / before result: > │ > () > │ > │ 00:02:04 v #1834 > Supervisor.buildFile / buildFileResult: > │ > Some > │ > │ "kernel = r""" > │ > │ """ > │ > │ class static_array(): > │ > │ def __init__(self, length): > │ > │ self.ptr = [] > │ > │ for _ in range(length): > │ > │ self.ptr.append(None) > │ > │ > │ > │ def __getitem__(self, index): > │ > │ assert 0 <= index < > len(self.ptr), "The get index > │ > needs to be in range." > │ > │ return self.ptr[index] > │ > │ > │ > │ def __setitem__(self, index, value): > │ > │ assert 0 <= index < > len(self.ptr), "The set index > │ > needs to be in range." > │ > │ self.ptr[index] = value > │ > │ > │ > │ class static_array_list(static_array): > │ > │ def __init__(self, length): > │ > │ super().__init__(length) > │ > │ self.length = 0 > │ > │ > │ > │ def __getitem__(self, index): > │ > │ assert 0 <= index < self.length, > "The get index needs > │ > to be in range." > │ > │ return self.ptr[index] > │ > │ > │ > │ def __setitem__(self, index, value): > │ > │ assert 0 <= index < self.length, > "The set index needs > │ > to be in range." > │ > │ self.ptr[index] = value > │ > │ > │ > │ def push(self,value): > │ > │ assert (self.length < > len(self.ptr)), "The length > │ > before pushing has to be less than the maximum length of > the array." > │ > │ self.ptr[self.length] = value > │ > │ self.length += 1 > │ > │ > │ > │ def pop(self): > │ > │ assert (0 < self.length), "The > length before popping > │ > has to be greater than 0." > │ > │ self.length -= 1 > │ > │ return self.ptr[self.length] > │ > │ > │ > │ def unsafe_set_length(self,i): > │ > │ assert 0 <= i <= len(self.ptr), > "The new length has > │ > to be in range." > │ > │ self.length = i > │ > │ > │ > │ class dynamic_array(static_array): > │ > │ pass > │ > │ > │ > │ class > dynamic_array_list(static_array_list): > │ > │ def length_(self): return > self.length > │ > │ > │ > │ import cupy as cp > │ > │ import numpy as np > │ > │ from dataclasses import dataclass > │ > │ from typing import NamedTuple, Union, > Callable, Tuple > │ > │ i8 = int; i16 = int; i32 = int; i64 = > int; u8 = int; u16 = > │ > int; u32 = int; u64 = int; f32 = float; f64 = float; char = > str; string = str > │ > │ cuda = False > │ > │ > │ > │ def main_body(): > │ > │ return 0.3325000000000001 > │ > │ > │ > │ def main(): > │ > │ r = main_body() > │ > │ if cuda: > cp.cuda.get_current_stream().synchronize() # > │ > This line is here so the `__trap()` calls on the kernel > aren't missed. > │ > │ return r > │ > │ > │ > │ if __name__ == '__main__': result = > main(); None if result is > │ > None else print(result) > │ > │ " > │ > │ 00:02:04 v #1835 > Supervisor.buildFile / > │ > outputContentSeq2 unfoldAsync / msg: (Some > │ > │ "kernel = r""" > │ > │ """ > │ > │ class static_array(): > │ > │ def __init__(self, length): > │ > │ self.ptr = [] > │ > │ for _ in range(length): > │ > │ self.ptr.append(None) > │ > │ > │ > │ def __getitem__(self, index): > │ > │ assert 0 <= index < > len(self.ptr), "The get index > │ > needs to be in range." > │ > │ return self.ptr[index] > │ > │ > │ > │ def __setitem__(self, index, value): > │ > │ assert 0 <= index < > len(self.ptr), "The set index > │ > needs to be in range." > │ > │ self.ptr[index] = value > │ > │ > │ > │ class static_array_list(static_array): > │ > │ def __init__(self, length): > │ > │ super().__init__(length) > │ > │ self.length = 0 > │ > │ > │ > │ def __getitem__(self, index): > │ > │ assert 0 <= index < self.length, > "The get index needs > │ > to be in range." > │ > │ return self.ptr[index] > │ > │ > │ > │ def __setitem__(self, index, value): > │ > │ assert 0 <= index < self.length, > "The set index needs > │ > to be in range." > │ > │ self.ptr[index] = value > │ > │ > │ > │ def push(self,value): > │ > │ assert (self.length < > len(self.ptr)), "The length > │ > before pushing has to be less than the maximum length of > the array." > │ > │ self.ptr[self.length] = value > │ > │ self.length += 1 > │ > │ > │ > │ def pop(self): > │ > │ assert (0 < self.length), "The > length before popping > │ > has to be greater than 0." > │ > │ self.length -= 1 > │ > │ return self.ptr[self.length] > │ > │ > │ > │ def unsafe_set_length(self,i): > │ > │ assert 0 <= i <= len(self.ptr), > "The new length has > │ > to be in range." > │ > │ self.length = i > │ > │ > │ > │ class dynamic_array(static_array): > │ > │ pass > │ > │ > │ > │ class > dynamic_array_list(static_array_list): > │ > │ def length_(self): return > self.length > │ > │ > │ > │ import cupy as cp > │ > │ import numpy as np > │ > │ from dataclasses import dataclass > │ > │ from typing import NamedTuple, Union, > Callable, Tuple > │ > │ i8 = int; i16 = int; i32 = int; i64 = > int; u8 = int; u16 = > │ > int; u32 = int; u64 = int; f32 = float; f64 = float; char = > str; string = str > │ > │ cuda = False > │ > │ > │ > │ def main_body(): > │ > │ return 0.3325000000000001 > │ > │ > │ > │ def main(): > │ > │ r = main_body() > │ > │ if cuda: > cp.cuda.get_current_stream().synchronize() # > │ > This line is here so the `__trap()` calls on the kernel > aren't missed. > │ > │ return r > │ > │ > │ > │ if __name__ == '__main__': result = > main(); None if result is > │ > None else print(result) > │ > │ ", > │ > │ [], 0) > │ > │ 00:02:04 v #1836 > Supervisor.buildFile / ofSeqAsync / x: > │ > (Some > │ > │ "kernel = r""" > │ > │ """ > │ > │ class static_array(): > │ > │ def __init__(self, length): > │ > │ self.ptr = [] > │ > │ for _ in range(length): > │ > │ self.ptr.append(None) > │ > │ > │ > │ def __getitem__(self, index): > │ > │ assert 0 <= index < > len(self.ptr), "The get index > │ > needs to be in range." > │ > │ return self.ptr[index] > │ > │ > │ > │ def __setitem__(self, index, value): > │ > │ assert 0 <= index < > len(self.ptr), "The set index > │ > needs to be in range." > │ > │ self.ptr[index] = value > │ > │ > │ > │ class static_array_list(static_array): > │ > │ def __init__(self, length): > │ > │ super().__init__(length) > │ > │ self.length = 0 > │ > │ > │ > │ def __getitem__(self, index): > │ > │ assert 0 <= index < self.length, > "The get index needs > │ > to be in range." > │ > │ return self.ptr[index] > │ > │ > │ > │ def __setitem__(self, index, value): > │ > │ assert 0 <= index < self.length, > "The set index needs > │ > to be in range." > │ > │ self.ptr[index] = value > │ > │ > │ > │ def push(self,value): > │ > │ assert (self.length < > len(self.ptr)), "The length > │ > before pushing has to be less than the maximum length of > the array." > │ > │ self.ptr[self.length] = value > │ > │ self.length += 1 > │ > │ > │ > │ def pop(self): > │ > │ assert (0 < self.length), "The > length before popping > │ > has to be greater than 0." > │ > │ self.length -= 1 > │ > │ return self.ptr[self.length] > │ > │ > │ > │ def unsafe_set_length(self,i): > │ > │ assert 0 <= i <= len(self.ptr), > "The new length has > │ > to be in range." > │ > │ self.length = i > │ > │ > │ > │ class dynamic_array(static_array): > │ > │ pass > │ > │ > │ > │ class > dynamic_array_list(static_array_list): > │ > │ def length_(self): return > self.length > │ > │ > │ > │ import cupy as cp > │ > │ import numpy as np > │ > │ from dataclasses import dataclass > │ > │ from typing import NamedTuple, Union, > Callable, Tuple > │ > │ i8 = int; i16 = int; i32 = int; i64 = > int; u8 = int; u16 = > │ > int; u32 = int; u64 = int; f32 = float; f64 = float; char = > str; string = str > │ > │ cuda = False > │ > │ > │ > │ def main_body(): > │ > │ return 0.3325000000000001 > │ > │ > │ > │ def main(): > │ > │ r = main_body() > │ > │ if cuda: > cp.cuda.get_current_stream().synchronize() # > │ > This line is here so the `__trap()` calls on the kernel > aren't missed. > │ > │ return r > │ > │ > │ > │ if __name__ == '__main__': result = > main(); None if result is > │ > None else print(result) > │ > │ ", > │ > │ [], 0) > │ > │ 00:02:04 v #1837 > Supervisor.buildFile / result: [] / > │ > buildFileResult: Some > │ > │ "kernel = r""" > │ > │ """ > │ > │ class static_array(): > │ > │ def __init__(self, length): > │ > │ self.ptr = [] > │ > │ for _ in range(length): > │ > │ self.ptr.append(None) > │ > │ > │ > │ def __getitem__(self, index): > │ > │ assert 0 <= index < > len(self.ptr), "The get index > │ > needs to be in range." > │ > │ return self.ptr[index] > │ > │ > │ > │ def __setitem__(self, index, value): > │ > │ assert 0 <= index < > len(self.ptr), "The set index > │ > needs to be in range." > │ > │ self.ptr[index] = value > │ > │ > │ > │ class static_array_list(static_array): > │ > │ def __init__(self, length): > │ > │ super().__init__(length) > │ > │ self.length = 0 > │ > │ > │ > │ def __getitem__(self, index): > │ > │ assert 0 <= index < self.length, > "The get index needs > │ > to be in range." > │ > │ return self.ptr[index] > │ > │ > │ > │ def __setitem__(self, index, value): > │ > │ assert 0 <= index < self.length, > "The set index needs > │ > to be in range." > │ > │ self.ptr[index] = value > │ > │ > │ > │ def push(self,value): > │ > │ assert (self.length < > len(self.ptr)), "The length > │ > before pushing has to be less than the maximum length of > the array." > │ > │ self.ptr[self.length] = value > │ > │ self.length += 1 > │ > │ > │ > │ def pop(self): > │ > │ assert (0 < self.length), "The > length before popping > │ > has to be greater than 0." > │ > │ self.length -= 1 > │ > │ return self.ptr[self.length] > │ > │ > │ > │ def unsafe_set_length(self,i): > │ > │ assert 0 <= i <= len(self.ptr), > "The new length has > │ > to be in range." > │ > │ self.length = i > │ > │ > │ > │ class dynamic_array(static_array): > │ > │ pass > │ > │ > │ > │ class > dynamic_array_list(static_array_list): > │ > │ def length_(self): return > self.length > │ > │ > │ > │ import cupy as cp > │ > │ import numpy as np > │ > │ from dataclasses import dataclass > │ > │ from typing import NamedTuple, Union, > Callable, Tuple > │ > │ i8 = int; i16 = int; i32 = int; i64 = > int; u8 = int; u16 = > │ > int; u32 = int; u64 = int; f32 = float; f64 = float; char = > str; string = str > │ > │ cuda = False > │ > │ > │ > │ def main_body(): > │ > │ return 0.3325000000000001 > │ > │ > │ > │ def main(): > │ > │ r = main_body() > │ > │ if cuda: > cp.cuda.get_current_stream().synchronize() # > │ > This line is here so the `__trap()` calls on the kernel > aren't missed. > │ > │ return r > │ > │ > │ > │ if __name__ == '__main__': result = > main(); None if result is > │ > None else print(result) > │ > │ " / typeErrorCount: 0 > │ > │ 00:02:04 v #1838 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\ca288d6928a8e761855210f25f97fdc > │ > 056ee1f21be4a24b26e8533ec368831c8 / targetDir: > c:/home/git\polyglot\target > │ > │ Some > │ > │ (Some > │ > │ "kernel = r""" > │ > │ """ > │ > │ class static_array(): > │ > │ def __init__(self, length): > │ > │ self.ptr = [] > │ > │ for _ in range(length): > │ > │ self.ptr.append(None) > │ > │ > │ > │ def __getitem__(self, index): > │ > │ assert 0 <= index < > len(self.ptr), "The get index > │ > needs to be in range." > │ > │ return self.ptr[index] > │ > │ > │ > │ def __setitem__(self, index, value): > │ > │ assert 0 <= index < > len(self.ptr), "The set index > │ > needs to be in range." > │ > │ self.ptr[index] = value > │ > │ > │ > │ class static_array_list(static_array): > │ > │ def __init__(self, length): > │ > │ super().__init__(length) > │ > │ self.length = 0 > │ > │ > │ > │ def __getitem__(self, index): > │ > │ assert 0 <= index < self.length, > "The get index needs > │ > to be in range." > │ > │ return self.ptr[index] > │ > │ > │ > │ def __setitem__(self, index, value): > │ > │ assert 0 <= index < self.length, > "The set index needs > │ > to be in range." > │ > │ self.ptr[index] = value > │ > │ > │ > │ def push(self,value): > │ > │ assert (self.length < > len(self.ptr)), "The length > │ > before pushing has to be less than the maximum length of > the array." > │ > │ self.ptr[self.length] = value > │ > │ self.length += 1 > │ > │ > │ > │ def pop(self): > │ > │ assert (0 < self.length), "The > length before popping > │ > has to be greater than 0." > │ > │ self.length -= 1 > │ > │ return self.ptr[self.length] > │ > │ > │ > │ def unsafe_set_length(self,i): > │ > │ assert 0 <= i <= len(self.ptr), > "The new length has > │ > to be in range." > │ > │ self.length = i > │ > │ > │ > │ class dynamic_array(static_array): > │ > │ pass > │ > │ > │ > │ class > dynamic_array_list(static_array_list): > │ > │ def length_(self): return > self.length > │ > │ > │ > │ import cupy as cp > │ > │ import numpy as np > │ > │ from dataclasses import dataclass > │ > │ from typing import NamedTuple, Union, > Callable, Tuple > │ > │ i8 = int; i16 = int; i32 = int; i64 = > int; u8 = int; u16 = > │ > int; u32 = int; u64 = int; f32 = float; f64 = float; char = > str; string = str > │ > │ cuda = False > │ > │ > │ > │ def main_body(): > │ > │ return 0.3325000000000001 > │ > │ > │ > │ def main(): > │ > │ r = main_body() > │ > │ if cuda: > cp.cuda.get_current_stream().synchronize() # > │ > This line is here so the `__trap()` calls on the kernel > aren't missed. > │ > │ return r > │ > │ > │ > │ if __name__ == '__main__': result = > main(); None if result is > │ > None else print(result) > │ > │ ", > │ > │ []) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > """ > │ > inl init_series start end inc = > │ > inl total : f64 = conv ((end - start) / inc) + 1 > │ > listm.init total (conv >> (*) inc >> (+) start) : list > f64 > │ > > │ > type integration = (f64 -> f64) -> f64 -> f64 -> f64 > │ > > │ > inl integral dt : integration = > │ > fun f a b => > │ > init_series (a + dt / 2) (b - dt / 2) dt > │ > |> listm.map (f >> (*) dt) > │ > |> listm.fold (+) 0 > │ > > │ > inl main () = > │ > integral 0.1 (fun x => x ** 2) 0 1 > │ > """ > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Gleam [[||]] false 10000 None > │ > |> Async.runWithTimeout 11000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > Some "pub fn main () { 0.3325000000000001\n }", > │ > [[]] > │ > ) > │ > ) > │ > > │ > ── [ 673.79ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:02:04 v #1845 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\9fee147a19a3a90ab5113d3c8fb7b0b > │ > 2072de018aa3d73cd2d4eb0e7e7a32620\src\main.spi > │ > │ 00:02:04 v #1846 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\9fee147a19a3a90ab5113d3c8fb7b0b > │ > 2072de018aa3d73cd2d4eb0e7e7a32620\src\main.spi' > │ > │ 00:02:04 v #1847 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\9fee147a19a3a90ab5113d3c8fb7b0b > │ > 2072de018aa3d73cd2d4eb0e7e7a32620\src\main.spi > │ > │ 00:02:04 v #1848 > Supervisor.buildFile / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/9fee147a19a3a90ab5113d > │ > 3c8fb7b0b2072de018aa3d73cd2d4eb0e7e7a32620/src/main.spi" > │ > │ 00:02:04 v #1849 > Supervisor.buildFile / _fileOpenResult: > │ > <null> > │ > │ 00:02:04 v #1850 > Supervisor.buildFile / before result: > │ > () > │ > │ 00:02:04 v #2088 > Supervisor.buildFile / buildFileResult: > │ > Some "pub fn main () { 0.3325000000000001 > │ > │ }" > │ > │ 00:02:04 v #2089 > Supervisor.buildFile / > │ > outputContentSeq2 unfoldAsync / msg: (Some "pub fn main () > { 0.3325000000000001 > │ > │ }", [], 0) > │ > │ 00:02:04 v #2090 > Supervisor.buildFile / ofSeqAsync / x: > │ > (Some "pub fn main () { 0.3325000000000001 > │ > │ }", [], 0) > │ > │ 00:02:04 v #2091 > Supervisor.buildFile / result: [] / > │ > buildFileResult: Some "pub fn main () { 0.3325000000000001 > │ > │ }" / typeErrorCount: 0 > │ > │ 00:02:04 v #2092 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\9fee147a19a3a90ab5113d3c8fb7b0b > │ > 2072de018aa3d73cd2d4eb0e7e7a32620\src / targetDir: > c:/home/git\polyglot\target > │ > │ Some (Some "pub fn main () { > 0.3325000000000001 > │ > │ }", []) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > │ > """ > │ > inl init_series start end inc = > │ > inl total : f64 = conv ((end - start) / inc) + 1 > │ > listm.init total (conv >> (*) inc >> (+) start) : list > f64 > │ > > │ > type integration = (f64 -> f64) -> f64 -> f64 -> f64 > │ > > │ > inl integral dt : integration = > │ > fun f a b => > │ > init_series (a + dt / 2) (b - dt / 2) dt > │ > |> listm.map (f >> (*) dt) > │ > |> listm.fold (+) 0 > │ > > │ > inl main () = > │ > integral 0.01 (fun x => x ** 2) 0 1 > │ > """ > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Fsharp [[||]] false 10000 None > │ > |> Async.runWithTimeout 11000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > Some "0.33332500000000004\n", > │ > [[]] > │ > ) > │ > ) > │ > // |> _assertEqual None > │ > // |> fun x -> printfn $"{x.ToDisplayString ()}" > │ > > │ > ── [ 741.56ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:02:05 v #2101 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b931356 > │ > 33484d22c3ef6e7797ce64875a41451f4\main.spi > │ > │ 00:02:05 v #2102 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b931356 > │ > 33484d22c3ef6e7797ce64875a41451f4\main.spi' > │ > │ 00:02:05 v #2103 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b931356 > │ > 33484d22c3ef6e7797ce64875a41451f4\main.spi > │ > │ 00:02:05 v #2104 > Supervisor.buildFile / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce3caf39 > │ > a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi" > │ > │ 00:02:05 v #2105 > Supervisor.buildFile / _fileOpenResult: > │ > <null> > │ > │ 00:02:05 v #2106 > Supervisor.buildFile / before result: > │ > () > │ > │ 00:02:05 v #2344 > Supervisor.buildFile / buildFileResult: > │ > Some "0.33332500000000004 > │ > │ " > │ > │ 00:02:05 v #2345 > Supervisor.buildFile / > │ > outputContentSeq2 unfoldAsync / msg: (Some > "0.33332500000000004 > │ > │ ", [], 0) > │ > │ 00:02:05 v #2346 > Supervisor.buildFile / ofSeqAsync / x: > │ > (Some "0.33332500000000004 > │ > │ ", [], 0) > │ > │ 00:02:05 v #2347 > Supervisor.buildFile / result: [] / > │ > buildFileResult: Some "0.33332500000000004 > │ > │ " / typeErrorCount: 0 > │ > │ 00:02:05 v #2348 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\2acc44d97e6b50ce3caf39a0b931356 > │ > 33484d22c3ef6e7797ce64875a41451f4 / targetDir: > c:/home/git\polyglot\target > │ > │ Some (Some "0.33332500000000004 > │ > │ ", []) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > │ > "" > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Fsharp [[||]] false 10000 None > │ > |> Async.runWithTimeout 11000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > None, > │ > [[ "Cannot find `main` in file main." ]] > │ > ) > │ > ) > │ > > │ > ── [ 677.04ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:02:06 v #2359 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705d026 > │ > 0e9a932e5e68c0feb33db55c4d28170aa\main.spi > │ > │ 00:02:06 v #2360 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705d026 > │ > 0e9a932e5e68c0feb33db55c4d28170aa\main.spi' > │ > │ 00:02:06 v #2361 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705d026 > │ > 0e9a932e5e68c0feb33db55c4d28170aa\main.spi > │ > │ 00:02:06 v #2362 > Supervisor.buildFile / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/a65342ccc7da0da967b18d > │ > 8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi" > │ > │ 00:02:06 v #2363 > Supervisor.buildFile / _fileOpenResult: > │ > <null> > │ > │ 00:02:06 v #2364 > Supervisor.buildFile / before result: > │ > () > │ > │ 00:02:06 v #2606 > Supervisor.buildFile / buildFileResult: > │ > None > │ > │ 00:02:06 v #2607 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, [], 0) > │ > │ 00:02:06 v #2616 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: Some((Cannot find `main` in file main., > FatalError "Cannot > │ > find `main` in file main.")) / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705d026 > │ > 0e9a932e5e68c0feb33db55c4d28170aa\main.spi' > │ > │ 00:02:06 v #2617 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [ > │ > │ [ > │ > │ "Cannot find `main` in file main.", > │ > │ { > │ > │ "FatalError": "Cannot find `main` > in file main." > │ > │ } > │ > │ ] > │ > │ ] / typeErrorCount: 0 / retry: 0 / path:│ > > c:/home/git\polyglot\target/spiral_Eval\packages\a65342ccc7da0da967b18d8e705d026 > │ > 0e9a932e5e68c0feb33db55c4d28170aa\main.spi > │ > │ 00:02:06 v #2624 > Supervisor.buildFile / outputChild / x: > │ > Some > │ > │ (Ok > │ > │ (Some > │ > │ (None, > │ > │ [("Cannot find `main` in file > main.", > │ > │ FatalError "Cannot find > `main` in file main.")], > │ > 0))) > │ > │ 00:02:06 v #2625 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, > │ > │ [("Cannot find `main` in file main.", > │ > │ FatalError "Cannot find `main` in > file main.")], 0) > │ > │ 00:02:06 v #2626 > Supervisor.buildFile / result: > │ > [("Cannot find `main` in file main.", > │ > │ FatalError "Cannot find `main` in file > main.")] / > │ > buildFileResult: None / typeErrorCount: 0 > │ > │ 00:02:06 v #2627 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\a65342ccc7da0da967b18d8e705d026 > │ > 0e9a932e5e68c0feb33db55c4d28170aa / targetDir: > c:/home/git\polyglot\target > │ > │ Some (None, ["Cannot find `main` in file > main."]) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > │ > """inl main () = > │ > 1i32 / 0i32 > │ > """ > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Fsharp [[||]] false 10000 None > │ > |> Async.runWithTimeout 11000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > None, > │ > [[ "An attempt to divide by zero has been detected > at compile time." ]] > │ > ) > │ > ) > │ > > │ > ── [ 795.68ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:02:06 v #2628 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi > │ > │ 00:02:06 v #2629 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi' > │ > │ 00:02:06 v #2630 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi > │ > │ 00:02:06 v #2631 > Supervisor.buildFile / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab265 > │ > 89e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi" > │ > │ 00:02:06 v #2632 > Supervisor.buildFile / _fileOpenResult: > │ > <null> > │ > │ 00:02:06 v #2633 > Supervisor.buildFile / before result: > │ > () > │ > │ 00:02:07 v #2869 > Supervisor.buildFile / buildFileResult: > │ > None > │ > │ 00:02:07 v #2870 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, [], 0) > │ > │ 00:02:07 v #2871 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: Some((An attempt to divide by zero has > been detected at > │ > compile time., TracedError > │ > │ { message = "An attempt to divide by > zero has been detected > │ > at compile time." > │ > │ trace = > │ > │ ["Error trace on line: 1, column: > 10 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 2, column: 5 > in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. > │ > │ 1i32 / 0i32 > │ > │ ^ > │ > │ "] })) / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi' > │ > │ 00:02:07 v #2872 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [ > │ > │ [ > │ > │ "An attempt to divide by zero has > been detected at > │ > compile time.", > │ > │ { > │ > │ "TracedError": { > │ > │ "message": "An attempt to divide > by zero has been > │ > detected at compile time.", > │ > │ "trace": [ > │ > │ "Error trace on line: 1, > column: 10 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ ", > │ > │ "Error trace on line: 2, > column: 5 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. > │ > │ 1i32 / 0i32 > │ > │ ^ > │ > │ " > │ > │ ] > │ > │ } > │ > │ } > │ > │ ] > │ > │ ] / typeErrorCount: 0 / retry: 0 / path:│ > > c:/home/git\polyglot\target/spiral_Eval\packages\fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2\main.spi > │ > │ 00:02:07 v #2874 > Supervisor.buildFile / outputChild / x: > │ > Some > │ > │ (Ok > │ > │ (Some > │ > │ (None, > │ > │ [("An attempt to divide by zero > has been detected at > │ > compile time.", > │ > │ TracedError > │ > │ { message = > │ > │ "An attempt to divide by > zero has been > │ > detected at compile time." > │ > │ trace = > │ > │ ["Error trace on line: > 1, column: 10 in > │ > module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: > 2, column: 5 in > │ > module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. > │ > │ 1i32 / 0i32 > │ > │ ^ > │ > │ "] })], > │ > │ 0))) > │ > │ 00:02:07 v #2875 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, > │ > │ [("An attempt to divide by zero has > been detected at compile > │ > time.", > │ > │ TracedError > │ > │ { message = > │ > │ "An attempt to divide by zero > has been detected at > │ > compile time." > │ > │ trace = > │ > │ ["Error trace on line: 1, > column: 10 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 2, > column: 5 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. > │ > │ 1i32 / 0i32 > │ > │ ^ > │ > │ "] })], > │ > │ 0) > │ > │ 00:02:07 v #2876 > Supervisor.buildFile / result: [("An > │ > attempt to divide by zero has been detected at compile > time.", > │ > │ TracedError > │ > │ { message = > │ > │ "An attempt to divide by zero has > been detected at > │ > compile time." > │ > │ trace = > │ > │ ["Error trace on line: 1, column: > 10 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 2, column: > 5 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi. > │ > │ 1i32 / 0i32 > │ > │ ^ > │ > │ "] })] / buildFileResult: None / > typeErrorCount: 0 > │ > │ 00:02:07 v #2877 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\fef9812d9b06b75b1ab26589e52c6d6 > │ > ff05910b73ead9e8c4f27f88d2a5cdfb2 / targetDir: > c:/home/git\polyglot\target > │ > │ Some (None, ["An attempt to divide by > zero has been detected > │ > at compile time."]) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > │ > """ > │ > inl main () = > │ > real > │ > inl unbox_real forall a. (obj : a) : a = > │ > typecase obj with > │ > | _ => obj > │ > unbox_real () > │ > () > │ > """ > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Fsharp [[||]] false 10000 None > │ > |> Async.runWithTimeout 11000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > None, > │ > [[ "Cannot apply a forall with a term." ]] > │ > ) > │ > ) > │ > > │ > ── [ 669.37ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:02:07 v #2878 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi > │ > │ 00:02:07 v #2879 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi' > │ > │ 00:02:07 v #2880 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi > │ > │ 00:02:07 v #2881 > Supervisor.buildFile / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec > │ > 17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi" > │ > │ 00:02:07 v #2882 > Supervisor.buildFile / _fileOpenResult: > │ > <null> > │ > │ 00:02:07 v #2883 > Supervisor.buildFile / before result: > │ > () > │ > │ 00:02:07 v #3120 > Supervisor.buildFile / buildFileResult: > │ > None > │ > │ 00:02:07 v #3121 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, [], 0) > │ > │ 00:02:07 v #3122 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: Some((Cannot apply a forall with a term., > TracedError > │ > │ { message = "Cannot apply a forall > with a term." > │ > │ trace = > │ > │ ["Error trace on line: 2, column: > 10 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 4, column: 9 > in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl unbox_real forall a. (obj : > a) : a = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 7, column: 9 > in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ unbox_real () > │ > │ ^ > │ > │ "] })) / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi' > │ > │ 00:02:07 v #3123 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [ > │ > │ [ > │ > │ "Cannot apply a forall with a > term.", > │ > │ { > │ > │ "TracedError": { > │ > │ "message": "Cannot apply a > forall with a term.", > │ > │ "trace": [ > │ > │ "Error trace on line: 2, > column: 10 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ ", > │ > │ "Error trace on line: 4, > column: 9 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl unbox_real forall a. (obj : > a) : a = > │ > │ ^ > │ > │ ", > │ > │ "Error trace on line: 7, > column: 9 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ unbox_real () > │ > │ ^ > │ > │ " > │ > │ ] > │ > │ } > │ > │ } > │ > │ ] > │ > │ ] / typeErrorCount: 0 / retry: 0 / path:│ > > c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi > │ > │ 00:02:07 v #3125 > Supervisor.buildFile / outputChild / x: > │ > Some > │ > │ (Ok > │ > │ (Some > │ > │ (None, > │ > │ [("Cannot apply a forall with a > term.", > │ > │ TracedError > │ > │ { message = "Cannot apply a > forall with a term." > │ > │ trace = > │ > │ ["Error trace on line: > 2, column: 10 in > │ > module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: > 4, column: 9 in > │ > module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl unbox_real forall a. (obj : > a) : a = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: > 7, column: 9 in > │ > module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ unbox_real () > │ > │ ^ > │ > │ "] })], > │ > │ 0))) > │ > │ 00:02:07 v #3126 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, > │ > │ [("Cannot apply a forall with a term.", > │ > │ TracedError > │ > │ { message = "Cannot apply a forall > with a term." > │ > │ trace = > │ > │ ["Error trace on line: 2, > column: 10 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 4, > column: 9 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl unbox_real forall a. (obj : > a) : a = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 7, > column: 9 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ unbox_real () > │ > │ ^ > │ > │ "] })], > │ > │ 0) > │ > │ 00:02:07 v #3127 > Supervisor.buildFile / result: > │ > [("Cannot apply a forall with a term.", > │ > │ TracedError > │ > │ { message = "Cannot apply a forall > with a term." > │ > │ trace = > │ > │ ["Error trace on line: 2, column: > 10 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 4, column: > 9 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl unbox_real forall a. (obj : > a) : a = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 7, column: > 9 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ unbox_real () > │ > │ ^ > │ > │ "] })] / buildFileResult: None / > typeErrorCount: 0 > │ > │ 00:02:07 v #3128 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a / targetDir: > c:/home/git\polyglot\target > │ > │ Some (None, ["Cannot apply a forall with > a term."]) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > │ > """ > │ > inl main () = > │ > real > │ > inl unbox_real forall a. (obj : a) : a = > │ > typecase obj with > │ > | _ => obj > │ > unbox_real `i32 1 > │ > """ > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Fsharp [[||]] false 10000 None > │ > |> Async.runWithTimeout 11000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > None, > │ > [[ "The main function should not have a forall." ]] > │ > ) > │ > ) > │ > > │ > ── [ 677.98ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:02:08 v #3129 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc55fcc > │ > 7912380f5dd2d90fad118bad793251c4f\main.spi > │ > │ 00:02:08 v #3130 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc55fcc > │ > 7912380f5dd2d90fad118bad793251c4f\main.spi' > │ > │ 00:02:08 v #3131 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc55fcc > │ > 7912380f5dd2d90fad118bad793251c4f\main.spi > │ > │ 00:02:08 v #3132 > Supervisor.buildFile / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/0ba44c42df309b790acdf4 > │ > f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi" > │ > │ 00:02:08 v #3133 > Supervisor.buildFile / _fileOpenResult: > │ > <null> > │ > │ 00:02:08 v #3134 > Supervisor.buildFile / before result: > │ > () > │ > │ 00:02:08 v #3371 > Supervisor.buildFile / buildFileResult: > │ > None > │ > │ 00:02:08 v #3372 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, [], 0) > │ > │ 00:02:08 v #3373 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: Some((The main function should not have a > forall., TracedError > │ > { message = "The main function should not have a forall." > │ > │ trace = [] })) / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc55fcc > │ > 7912380f5dd2d90fad118bad793251c4f\main.spi' > │ > │ 00:02:08 v #3374 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [ > │ > │ [ > │ > │ "The main function should not have a > forall.", > │ > │ { > │ > │ "TracedError": { > │ > │ "message": "The main function > should not have a > │ > forall.", > │ > │ "trace": [] > │ > │ } > │ > │ } > │ > │ ] > │ > │ ] / typeErrorCount: 0 / retry: 0 / path:│ > > c:/home/git\polyglot\target/spiral_Eval\packages\0ba44c42df309b790acdf4f9fc55fcc > │ > 7912380f5dd2d90fad118bad793251c4f\main.spi > │ > │ 00:02:08 v #3376 > Supervisor.buildFile / outputChild / x: > │ > Some > │ > │ (Ok > │ > │ (Some > │ > │ (None, > │ > │ [("The main function should not > have a forall.", > │ > │ TracedError { message = "The > main function should > │ > not have a forall." > │ > │ trace = [] })], > 0))) > │ > │ 00:02:08 v #3377 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, > │ > │ [("The main function should not have a > forall.", > │ > │ TracedError { message = "The main > function should not have > │ > a forall." > │ > │ trace = [] })], 0) > │ > │ 00:02:08 v #3378 > Supervisor.buildFile / result: [("The > │ > main function should not have a forall.", > │ > │ TracedError { message = "The main > function should not have > │ > a forall." > │ > │ trace = [] })] / > buildFileResult: None / > │ > typeErrorCount: 0 > │ > │ 00:02:08 v #3379 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\0ba44c42df309b790acdf4f9fc55fcc > │ > 7912380f5dd2d90fad118bad793251c4f / targetDir: > c:/home/git\polyglot\target > │ > │ Some (None, ["The main function should > not have a forall."]) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > │ > """ > │ > inl main () = > │ > real > │ > inl unbox_real forall a. (obj : a) : a = > │ > typecase obj with > │ > | _ => obj > │ > unbox_real () > │ > () > │ > """ > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Fsharp [[||]] false 10000 None > │ > |> Async.runWithTimeout 11000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > None, > │ > [[ "Cannot apply a forall with a term." ]] > │ > ) > │ > ) > │ > > │ > ── [ 710.42ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:02:08 v #3380 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi > │ > │ 00:02:08 v #3381 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi' > │ > │ 00:02:08 v #3382 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi > │ > │ 00:02:08 v #3383 > Supervisor.buildFile / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec > │ > 17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi" > │ > │ 00:02:08 v #3384 > Supervisor.buildFile / _fileOpenResult: > │ > <null> > │ > │ 00:02:08 v #3385 > Supervisor.buildFile / before result: > │ > () > │ > │ 00:02:09 v #3619 > Supervisor.buildFile / buildFileResult: > │ > None > │ > │ 00:02:09 v #3620 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, [], 0) > │ > │ 00:02:09 v #3621 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: Some((Cannot apply a forall with a term., > TracedError > │ > │ { message = "Cannot apply a forall > with a term." > │ > │ trace = > │ > │ ["Error trace on line: 2, column: > 10 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 4, column: 9 > in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl unbox_real forall a. (obj : > a) : a = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 7, column: 9 > in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ unbox_real () > │ > │ ^ > │ > │ "] })) / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi' > │ > │ 00:02:09 v #3622 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [ > │ > │ [ > │ > │ "Cannot apply a forall with a > term.", > │ > │ { > │ > │ "TracedError": { > │ > │ "message": "Cannot apply a > forall with a term.", > │ > │ "trace": [ > │ > │ "Error trace on line: 2, > column: 10 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ ", > │ > │ "Error trace on line: 4, > column: 9 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl unbox_real forall a. (obj : > a) : a = > │ > │ ^ > │ > │ ", > │ > │ "Error trace on line: 7, > column: 9 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ unbox_real () > │ > │ ^ > │ > │ " > │ > │ ] > │ > │ } > │ > │ } > │ > │ ] > │ > │ ] / typeErrorCount: 0 / retry: 0 / path:│ > > c:/home/git\polyglot\target/spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a\main.spi > │ > │ 00:02:09 v #3624 > Supervisor.buildFile / outputChild / x: > │ > Some > │ > │ (Ok > │ > │ (Some > │ > │ (None, > │ > │ [("Cannot apply a forall with a > term.", > │ > │ TracedError > │ > │ { message = "Cannot apply a > forall with a term." > │ > │ trace = > │ > │ ["Error trace on line: > 2, column: 10 in > │ > module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: > 4, column: 9 in > │ > module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl unbox_real forall a. (obj : > a) : a = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: > 7, column: 9 in > │ > module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ unbox_real () > │ > │ ^ > │ > │ "] })], > │ > │ 0))) > │ > │ 00:02:09 v #3625 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, > │ > │ [("Cannot apply a forall with a term.", > │ > │ TracedError > │ > │ { message = "Cannot apply a forall > with a term." > │ > │ trace = > │ > │ ["Error trace on line: 2, > column: 10 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 4, > column: 9 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl unbox_real forall a. (obj : > a) : a = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 7, > column: 9 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ unbox_real () > │ > │ ^ > │ > │ "] })], > │ > │ 0) > │ > │ 00:02:09 v #3626 > Supervisor.buildFile / result: > │ > [("Cannot apply a forall with a term.", > │ > │ TracedError > │ > │ { message = "Cannot apply a forall > with a term." > │ > │ trace = > │ > │ ["Error trace on line: 2, column: > 10 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl main () = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 4, column: > 9 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ inl unbox_real forall a. (obj : > a) : a = > │ > │ ^ > │ > │ "; > │ > │ "Error trace on line: 7, column: > 9 in module: > │ > > c:/home/git/polyglot/target/spiral_Eval/packages/667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a/main.spi. > │ > │ unbox_real () > │ > │ ^ > │ > │ "] })] / buildFileResult: None / > typeErrorCount: 0 > │ > │ 00:02:09 v #3627 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\667528659dc2e5af51a6ec17f1774bd > │ > 7ffff5b5a47e4e117eec78e740987f29a / targetDir: > c:/home/git\polyglot\target > │ > │ Some (None, ["Cannot apply a forall with > a term."]) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > │ > """inl main () = > │ > 1 + "" > │ > """ > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Fsharp [[||]] false 10000 None > │ > |> Async.runWithTimeout 11000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > None, > │ > [[ > │ > "main.spi: > │ > Constraint satisfaction error. > │ > Got: string > │ > Fails to satisfy: number" > │ > ]] > │ > ) > │ > ) > │ > > │ > ── [ 517.11ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:02:09 v #3628 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeace676 > │ > 85221d91a46e3655199e42df713504aa0\main.spi > │ > │ 00:02:09 v #3629 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeace676 > │ > 85221d91a46e3655199e42df713504aa0\main.spi' > │ > │ 00:02:09 v #3630 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeace676 > │ > 85221d91a46e3655199e42df713504aa0\main.spi > │ > │ 00:02:09 v #3631 > Supervisor.buildFile / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9a > │ > abeace67685221d91a46e3655199e42df713504aa0/main.spi" > │ > │ 00:02:09 v #3632 > Supervisor.buildFile / _fileOpenResult: > │ > <null> > │ > │ 00:02:09 v #3633 > Supervisor.buildFile / before result: > │ > () > │ > │ 00:02:09 v #3714 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: Some((main.spi: > │ > │ Constraint satisfaction error. > │ > │ Got: string > │ > │ Fails to satisfy: number, TypeErrors > │ > │ { errors = > │ > │ [(({ character = 8 > │ > │ line = 1 }, { character = 10 > │ > │ line = 1 }), > │ > │ "Constraint satisfaction error. > │ > │ Got: string > │ > │ Fails to satisfy: number")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9a > │ > abeace67685221d91a46e3655199e42df713504aa0/main.spi" })) / > path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeace676 > │ > 85221d91a46e3655199e42df713504aa0\main.spi' > │ > │ 00:02:09 v #3718 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [ > │ > │ [ > │ > │ "main.spi: > │ > │ Constraint satisfaction error. > │ > │ Got: string > │ > │ Fails to satisfy: number", > │ > │ { > │ > │ "TypeErrors": { > │ > │ "errors": [ > │ > │ [ > │ > │ [ > │ > │ { > │ > │ "character": 8, > │ > │ "line": 1 > │ > │ }, > │ > │ { > │ > │ "character": 10, > │ > │ "line": 1 > │ > │ } > │ > │ ], > │ > │ "Constraint satisfaction > error. > │ > │ Got: string > │ > │ Fails to satisfy: number" > │ > │ ] > │ > │ ], > │ > │ "uri": > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9a > │ > abeace67685221d91a46e3655199e42df713504aa0/main.spi" > │ > │ } > │ > │ } > │ > │ ] > │ > │ ] / typeErrorCount: 0 / retry: 0 / path:│ > > c:/home/git\polyglot\target/spiral_Eval\packages\c030f84f8e553befcbdd9aabeace676 > │ > 85221d91a46e3655199e42df713504aa0\main.spi > │ > │ 00:02:09 v #3725 > Supervisor.buildFile / outputContentSeq > │ > unfoldAsync / msg: (None, > │ > │ Some > │ > │ ("main.spi: > │ > │ Constraint satisfaction error. > │ > │ Got: string > │ > │ Fails to satisfy: number", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 8 > │ > │ line = 1 }, { character = > 10 > │ > │ line = 1 }), > │ > │ "Constraint satisfaction > error. > │ > │ Got: string > │ > │ Fails to satisfy: number")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9a > │ > abeace67685221d91a46e3655199e42df713504aa0/main.spi" })) > │ > │ 00:02:09 v #3727 > Supervisor.buildFile / > │ > takeWhileInclusive / TypeErrors trigger > │ > │ 00:02:09 v #3732 > Supervisor.buildFile / outputChild / x: > │ > Some > │ > │ (Ok > │ > │ (Some > │ > │ (None, > │ > │ [("main.spi: > │ > │ Constraint satisfaction error. > │ > │ Got: string > │ > │ Fails to satisfy: number", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 8 > │ > │ line = 1 }, { > character = 10 > │ > │ line > = 1 }), > │ > │ "Constraint > satisfaction error. > │ > │ Got: string > │ > │ Fails to satisfy: number")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9a > │ > abeace67685221d91a46e3655199e42df713504aa0/main.spi" })], > │ > │ 0))) > │ > │ 00:02:09 v #3733 > Supervisor.buildFile / outputChild |> > │ > Async.map > │ > │ 00:02:09 v #3736 > Supervisor.buildFile / > │ > outputContentSeq2 unfoldAsync / msg: (None, > │ > │ [("main.spi: > │ > │ Constraint satisfaction error. > │ > │ Got: string > │ > │ Fails to satisfy: number", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 8 > │ > │ line = 1 }, { character = > 10 > │ > │ line = 1 }), > │ > │ "Constraint satisfaction > error. > │ > │ Got: string > │ > │ Fails to satisfy: number")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9a > │ > abeace67685221d91a46e3655199e42df713504aa0/main.spi" })], > │ > │ 0) > │ > │ 00:02:09 v #3739 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, > │ > │ [("main.spi: > │ > │ Constraint satisfaction error. > │ > │ Got: string > │ > │ Fails to satisfy: number", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 8 > │ > │ line = 1 }, { character = > 10 > │ > │ line = 1 }), > │ > │ "Constraint satisfaction > error. > │ > │ Got: string > │ > │ Fails to satisfy: number")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9a > │ > abeace67685221d91a46e3655199e42df713504aa0/main.spi" })], > │ > │ 0) > │ > │ 00:02:09 v #3742 > Supervisor.buildFile / result: > │ > [("main.spi: > │ > │ Constraint satisfaction error. > │ > │ Got: string > │ > │ Fails to satisfy: number", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 8 > │ > │ line = 1 }, { character = 10 > │ > │ line = 1 }), > │ > │ "Constraint satisfaction error. > │ > │ Got: string > │ > │ Fails to satisfy: number")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/c030f84f8e553befcbdd9a > │ > abeace67685221d91a46e3655199e42df713504aa0/main.spi" })] / > buildFileResult: None > │ > / typeErrorCount: 0 > │ > │ 00:02:09 v #3743 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\c030f84f8e553befcbdd9aabeace676 > │ > 85221d91a46e3655199e42df713504aa0 / targetDir: > c:/home/git\polyglot\target > │ > │ 00:02:09 v #3745 > Supervisor.buildFile / outputChild |> > │ > Async.map > │ > │ Some (None, ["main.spi: > │ > │ Constraint satisfaction error. > │ > │ Got: string > │ > │ Fails to satisfy: number"]) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > │ > """inl main () = > │ > x + y > │ > """ > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Fsharp [[||]] false 10000 None > │ > |> Async.runWithTimeout 11000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > None, > │ > [[ > │ > "main.spi: > │ > Unbound variable: x. > │ > Unbound variable: y." > │ > ]] > │ > ) > │ > ) > │ > > │ > ── [ 525.44ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:02:10 v #3882 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa7049b7 > │ > 77a622aa3bf7333b151c767fde35dc5d1\main.spi > │ > │ 00:02:10 v #3883 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa7049b7 > │ > 77a622aa3bf7333b151c767fde35dc5d1\main.spi' > │ > │ 00:02:10 v #3884 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa7049b7 > │ > 77a622aa3bf7333b151c767fde35dc5d1\main.spi > │ > │ 00:02:10 v #3885 > Supervisor.buildFile / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429 > │ > cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" > │ > │ 00:02:10 v #3886 > Supervisor.buildFile / _fileOpenResult: > │ > <null> > │ > │ 00:02:10 v #3887 > Supervisor.buildFile / before result: > │ > () > │ > │ 00:02:10 v #3927 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: Some((main.spi: > │ > │ Unbound variable: x. > │ > │ Unbound variable: y., TypeErrors > │ > │ { errors = > │ > │ [(({ character = 4 > │ > │ line = 1 }, { character = 5 > │ > │ line = 1 }), > "Unbound variable: x."); > │ > │ (({ character = 8 > │ > │ line = 1 }, { character = 9 > │ > │ line = 1 }), > "Unbound variable: y.")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429 > │ > cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })) / > path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa7049b7 > │ > 77a622aa3bf7333b151c767fde35dc5d1\main.spi' > │ > │ 00:02:10 v #3929 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [ > │ > │ [ > │ > │ "main.spi: > │ > │ Unbound variable: x. > │ > │ Unbound variable: y.", > │ > │ { > │ > │ "TypeErrors": { > │ > │ "errors": [ > │ > │ [ > │ > │ [ > │ > │ { > │ > │ "character": 4, > │ > │ "line": 1 > │ > │ }, > │ > │ { > │ > │ "character": 5, > │ > │ "line": 1 > │ > │ } > │ > │ ], > │ > │ "Unbound variable: x." > │ > │ ], > │ > │ [ > │ > │ [ > │ > │ { > │ > │ "character": 8, > │ > │ "line": 1 > │ > │ }, > │ > │ { > │ > │ "character": 9, > │ > │ "line": 1 > │ > │ } > │ > │ ], > │ > │ "Unbound variable: y." > │ > │ ] > │ > │ ], > │ > │ "uri": > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429 > │ > cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" > │ > │ } > │ > │ } > │ > │ ] > │ > │ ] / typeErrorCount: 0 / retry: 0 / path:│ > > c:/home/git\polyglot\target/spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa7049b7 > │ > 77a622aa3bf7333b151c767fde35dc5d1\main.spi > │ > │ 00:02:10 v #3933 > Supervisor.buildFile / outputContentSeq > │ > unfoldAsync / msg: (None, > │ > │ Some > │ > │ ("main.spi: > │ > │ Unbound variable: x. > │ > │ Unbound variable: y.", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 4 > │ > │ line = 1 }, { character = > 5 > │ > │ line = 1 }), > "Unbound variable: > │ > x."); > │ > │ (({ character = 8 > │ > │ line = 1 }, { character = > 9 > │ > │ line = 1 }), > "Unbound variable: > │ > y.")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429 > │ > cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })) > │ > │ 00:02:10 v #3934 > Supervisor.buildFile / > │ > takeWhileInclusive / TypeErrors trigger > │ > │ 00:02:10 v #3936 > Supervisor.buildFile / outputChild / x: > │ > Some > │ > │ (Ok > │ > │ (Some > │ > │ (None, > │ > │ [("main.spi: > │ > │ Unbound variable: x. > │ > │ Unbound variable: y.", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 4 > │ > │ line = 1 }, { > character = 5 > │ > │ line > = 1 }), "Unbound > │ > variable: x."); > │ > │ (({ character = 8 > │ > │ line = 1 }, { > character = 9 > │ > │ line > = 1 }), "Unbound > │ > variable: y.")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429 > │ > cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })], > │ > │ 0))) > │ > │ 00:02:10 v #3937 > Supervisor.buildFile / outputChild |> > │ > Async.map > │ > │ 00:02:10 v #3941 > Supervisor.buildFile / > │ > outputContentSeq2 unfoldAsync / msg: (None, > │ > │ [("main.spi: > │ > │ Unbound variable: x. > │ > │ Unbound variable: y.", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 4 > │ > │ line = 1 }, { character = 5 > │ > │ line = 1 }), > "Unbound variable: > │ > x."); > │ > │ (({ character = 8 > │ > │ line = 1 }, { character = 9 > │ > │ line = 1 }), > "Unbound variable: > │ > y.")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429 > │ > cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })], > │ > │ 0) > │ > │ 00:02:10 v #3944 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, > │ > │ [("main.spi: > │ > │ Unbound variable: x. > │ > │ Unbound variable: y.", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 4 > │ > │ line = 1 }, { character = 5 > │ > │ line = 1 }), > "Unbound variable: > │ > x."); > │ > │ (({ character = 8 > │ > │ line = 1 }, { character = 9 > │ > │ line = 1 }), > "Unbound variable: > │ > y.")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429 > │ > cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })], > │ > │ 0) > │ > │ 00:02:10 v #3947 > Supervisor.buildFile / result: > │ > [("main.spi: > │ > │ Unbound variable: x. > │ > │ Unbound variable: y.", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 4 > │ > │ line = 1 }, { character = 5 > │ > │ line = 1 }), > "Unbound variable: > │ > x."); > │ > │ (({ character = 8 > │ > │ line = 1 }, { character = 9 > │ > │ line = 1 }), > "Unbound variable: > │ > y.")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba9c8429 > │ > cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })] / > buildFileResult: None > │ > / typeErrorCount: 0 > │ > │ 00:02:10 v #3948 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\6cdeec507f9de5ba9c8429cfa7049b7 > │ > 77a622aa3bf7333b151c767fde35dc5d1 / targetDir: > c:/home/git\polyglot\target > │ > │ 00:02:10 v #3949 > Supervisor.buildFile / outputChild |> > │ > Async.map > │ > │ Some (None, ["main.spi: > │ > │ Unbound variable: x. > │ > │ Unbound variable: y."]) > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > │ > """inl rec main () = main""" > │ > |> fun code -> Spi (code, None) > │ > |> buildCode Fsharp [[||]] false 10000 None > │ > |> Async.runWithTimeout 11000 > │ > |> Option.map (fun (_, (_, outputContent), errors) -> > outputContent, errors |> > │ > List.map fst) > │ > |> _assertEqual ( > │ > Some ( > │ > None, > │ > [[ > │ > "main.spi: > │ > Recursive metavariables are not allowed. A metavar cannot > be unified with a type > │ > that has itself. > │ > Got: 'a > │ > Expected: () -> 'a" > │ > ]] > │ > ) > │ > ) > │ > // |> _assertEqual None > │ > // |> fun x -> printfn $"{x.ToDisplayString ()}" > │ > > │ > ── [ 498.59ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:02:10 v #4136 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\883e0123fe6304a9501da46e85facc3 > │ > 9c4ac4e3dbb77895f8ccd4581901ee2b7\main.spi > │ > │ 00:02:10 v #4137 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\883e0123fe6304a9501da46e85facc3 > │ > 9c4ac4e3dbb77895f8ccd4581901ee2b7\main.spi' > │ > │ 00:02:10 v #4138 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [] / typeErrorCount: 0 / > retry: 0 / path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\883e0123fe6304a9501da46e85facc3 > │ > 9c4ac4e3dbb77895f8ccd4581901ee2b7\main.spi > │ > │ 00:02:10 v #4139 > Supervisor.buildFile / fullPathUri: > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a9501da4 > │ > 6e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" > │ > │ 00:02:10 v #4140 > Supervisor.buildFile / _fileOpenResult: > │ > <null> > │ > │ 00:02:10 v #4141 > Supervisor.buildFile / before result: > │ > () > │ > │ 00:02:10 v #4181 > Supervisor.buildFile / AsyncSeq.scan / > │ > outputContent: > │ > │ ' / errors: [] / outputContentResult: / > typeErrorCount: 0 / > │ > retry: 0 / error: Some((main.spi: > │ > │ Recursive metavariables are not allowed. > A metavar cannot be > │ > unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a, TypeErrors > │ > │ { errors = > │ > │ [(({ character = 18 > │ > │ line = 0 }, { character = 22 > │ > │ line = 0 }), > │ > │ "Recursive metavariables are not > allowed. A metavar > │ > cannot be unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a9501da4 > │ > 6e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })) / > path: > │ > > c:/home/git\polyglot\target/spiral_Eval\packages\883e0123fe6304a9501da46e85facc3 > │ > 9c4ac4e3dbb77895f8ccd4581901ee2b7\main.spi' > │ > │ 00:02:10 v #4183 > Supervisor.buildFile / > │ > takeWhileInclusive / outputContent: > │ > │ '' / errors: [ > │ > │ [ > │ > │ "main.spi: > │ > │ Recursive metavariables are not allowed. > A metavar cannot be > │ > unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a", > │ > │ { > │ > │ "TypeErrors": { > │ > │ "errors": [ > │ > │ [ > │ > │ [ > │ > │ { > │ > │ "character": 18, > │ > │ "line": 0 > │ > │ }, > │ > │ { > │ > │ "character": 22, > │ > │ "line": 0 > │ > │ } > │ > │ ], > │ > │ "Recursive metavariables are > not allowed. A > │ > metavar cannot be unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a" > │ > │ ] > │ > │ ], > │ > │ "uri": > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a9501da4 > │ > 6e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" > │ > │ } > │ > │ } > │ > │ ] > │ > │ ] / typeErrorCount: 0 / retry: 0 / path:│ > > c:/home/git\polyglot\target/spiral_Eval\packages\883e0123fe6304a9501da46e85facc3 > │ > 9c4ac4e3dbb77895f8ccd4581901ee2b7\main.spi > │ > │ 00:02:10 v #4185 > Supervisor.buildFile / outputContentSeq > │ > unfoldAsync / msg: (None, > │ > │ Some > │ > │ ("main.spi: > │ > │ Recursive metavariables are not allowed. > A metavar cannot be > │ > unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 18 > │ > │ line = 0 }, { character = > 22 > │ > │ line = 0 }), > │ > │ "Recursive metavariables are > not allowed. A > │ > metavar cannot be unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a9501da4 > │ > 6e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })) > │ > │ 00:02:10 v #4186 > Supervisor.buildFile / > │ > takeWhileInclusive / TypeErrors trigger > │ > │ 00:02:10 v #4190 > Supervisor.buildFile / outputChild / x: > │ > Some > │ > │ (Ok > │ > │ (Some > │ > │ (None, > │ > │ [("main.spi: > │ > │ Recursive metavariables are not allowed. > A metavar cannot be > │ > unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 18 > │ > │ line = 0 }, { > character = 22 > │ > │ line > = 0 }), > │ > │ "Recursive > metavariables are not allowed. A > │ > metavar cannot be unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a9501da4 > │ > 6e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })], > │ > │ 0))) > │ > │ 00:02:10 v #4191 > Supervisor.buildFile / outputChild |> > │ > Async.map > │ > │ 00:02:10 v #4194 > Supervisor.buildFile / > │ > outputContentSeq2 unfoldAsync / msg: (None, > │ > │ [("main.spi: > │ > │ Recursive metavariables are not allowed. > A metavar cannot be > │ > unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 18 > │ > │ line = 0 }, { character = > 22 > │ > │ line = 0 }), > │ > │ "Recursive metavariables are > not allowed. A metavar > │ > cannot be unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a9501da4 > │ > 6e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })], > │ > │ 0) > │ > │ 00:02:10 v #4196 > Supervisor.buildFile / ofSeqAsync / x: > │ > (None, > │ > │ [("main.spi: > │ > │ Recursive metavariables are not allowed. > A metavar cannot be > │ > unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 18 > │ > │ line = 0 }, { character = > 22 > │ > │ line = 0 }), > │ > │ "Recursive metavariables are > not allowed. A metavar > │ > cannot be unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a9501da4 > │ > 6e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })], > │ > │ 0) > │ > │ 00:02:10 v #4199 > Supervisor.buildFile / result: > │ > [("main.spi: > │ > │ Recursive metavariables are not allowed. > A metavar cannot be > │ > unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a", > │ > │ TypeErrors > │ > │ { errors = > │ > │ [(({ character = 18 > │ > │ line = 0 }, { character = 22 > │ > │ line = 0 }), > │ > │ "Recursive metavariables are > not allowed. A metavar > │ > cannot be unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a")] > │ > │ uri = > │ > │ > │ > > "file:///c:/home/git/polyglot/target/spiral_Eval/packages/883e0123fe6304a9501da4 > │ > 6e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })] / > buildFileResult: None > │ > / typeErrorCount: 0 > │ > │ 00:02:10 v #4200 > Supervisor.buildFile / retry: 0 / > │ > typeErrorCount: 0 / fileDir: > │ > > c:\home\git\polyglot\target\spiral_Eval\packages\883e0123fe6304a9501da46e85facc3 > │ > 9c4ac4e3dbb77895f8ccd4581901ee2b7 / targetDir: > c:/home/git\polyglot\target > │ > │ 00:02:10 v #4201 > Supervisor.buildFile / outputChild |> > │ > Async.map > │ > │ Some > │ > │ (None, > │ > │ ["main.spi: > │ > │ Recursive metavariables are not allowed. > A metavar cannot be > │ > unified with a type that has itself. > │ > │ Got: 'a > │ > │ Expected: () -> 'a"]) > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## getFileTokenRange > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let getFileTokenRange port cancellationToken path = async { > │ > let fullPath = path |> System.IO.Path.GetFullPath > │ > let! code = fullPath |> > SpiralFileSystem.read_all_text_async > │ > let lines = code |> SpiralSm.split "\n" > │ > > │ > let struct (token, disposable) = > SpiralThreading.new_disposable_token > │ > cancellationToken > │ > use _ = disposable > │ > > │ > let port = port |> Option.defaultWith getCompilerPort > │ > // let! serverPort, _errors, ct, disposable = > awaitCompiler port (Some > │ > token) > │ > // use _ = disposable > │ > > │ > let fullPathUri = fullPath |> > SpiralFileSystem.normalize_path |> > │ > SpiralFileSystem.new_file_uri > │ > > │ > // let fileOpenObj = {| FileOpen = {| uri = > fullPathUri; spiText = code |} > │ > |} > │ > // let! _fileOpenResult = fileOpenObj |> sendObj > serverPort > │ > let fileOpenArgs = {| uri = fullPathUri; spiText = code > |} > │ > let! _fileOpenResult = > │ > server2.job_null (server2.supervisor *<+ > SupervisorReq.FileOpen > │ > fileOpenArgs) > │ > |> Async.AwaitTask > │ > > │ > // do! Async.Sleep 60 > │ > > │ > let fileTokenRangeArgs = > │ > {| > │ > uri = fullPathUri > │ > range = > │ > {| > │ > line = 0 > │ > character = 0 > │ > |}, > │ > {| > │ > line = lines.Length - 1 > │ > character = lines.[[lines.Length - > 1]].Length > │ > |} > │ > |} > │ > // let! fileTokenRangeResult = > │ > // fileTokenRangeObj > │ > // |> sendObj serverPort > │ > // |> Async.withCancellationToken ct > │ > > │ > // let fileTokenRangeArgs = {| uri = fullPathUri; > backend = backendId |} > │ > let! fileTokenRangeResult = > │ > server2.job_val (fun res -> server2.supervisor *<+ > │ > SupervisorReq.FileTokenRange(fileTokenRangeArgs,res)) > │ > |> Async.AwaitTask > │ > > │ > let fileDir = fullPath |> > System.IO.Path.GetDirectoryName > │ > if fileDir |> SpiralSm.starts_with (workspaceRoot </> > "target") then > │ > let fileDirUri = fileDir |> > SpiralFileSystem.normalize_path |> > │ > SpiralFileSystem.new_file_uri > │ > // let fileDeleteObj = {| FileDelete = {| uris = > [[| fileDirUri |]] |} > │ > |} > │ > // let! _fileDeleteResult = fileDeleteObj |> > sendObj serverPort > │ > let fileDeleteArgs = {| uris = [[| fileDirUri |]] > |} > │ > let! _fileDeleteResult = > │ > server2.job_null (server2.supervisor *<+ > SupervisorReq.FileDelete > │ > fileDeleteArgs) > │ > |> Async.AwaitTask > │ > () > │ > > │ > return fileTokenRangeResult |> > FSharp.Json.Json.deserialize<int array> |> > │ > Some > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## getCodeTokenRange > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let getCodeTokenRange cancellationToken code = async { > │ > let! mainPath, _ = > │ > persistCode {| input = Spi (code, None); backend = > None; packages = > │ > [[||]] |} > │ > > │ > let codeDir = mainPath |> > System.IO.Path.GetDirectoryName > │ > let tokensPath = codeDir </> "tokens.json" > │ > let! tokens = async { > │ > if tokensPath |> System.IO.File.Exists |> not > │ > then return None > │ > else > │ > let! text = tokensPath |> > SpiralFileSystem.read_all_text_async > │ > > │ > return > │ > if text.Length > 2 > │ > then text |> > FSharp.Json.Json.deserialize<int array> |> Some > │ > else None > │ > } > │ > match tokens with > │ > | Some tokens -> > │ > return tokens |> Some > │ > | None -> return! mainPath |> getFileTokenRange None > cancellationToken > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > """inl main () = ()""" > │ > |> getCodeTokenRange None > │ > |> Async.runWithTimeout 10000 > │ > |> Option.flatten > │ > |> _assertEqual (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; > 5; 1; 8; 0; 0; 1; 1; > │ > 8; 0; 0; 2; 1; 4; 0; 0; > │ > 2; 1; 8; 0; 0; 1; 1; 8; 0 |]]) > │ > > │ > ── [ 826.07ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ Some [|0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; > 5; 1; 8; 0; 0; 1; 1; > │ > 8; 0; 0; 2; 1; 4; 0; 0; 2; 1; 8; 0; 0; 1; 1; 8; 0|] > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > """inl main () = 1i32""" > │ > |> getCodeTokenRange None > │ > |> Async.runWithTimeout 10000 > │ > |> Option.flatten > │ > |> _assertEqual (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; > 5; 1; 8; 0; 0; 1; 1; > │ > 8; 0; 0; 2; 1; 4; 0; 0; > │ > 2; 1; 3; 0; 0; 1; 3; 12; 0 |]]) > │ > > │ > ── [ 6.21s - stdout ] > ────────────────────────────────────────────────────────── > │ > │ Some [|0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; > 5; 1; 8; 0; 0; 1; 1; > │ > 8; 0; 0; 2; 1; 4; 0; 0; 2; 1; 3; 0; 0; 1; 3; 12; 0|] > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## getFileHoverAt > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let getFileHoverAt > │ > port > │ > cancellationToken > │ > path > │ > (position : {| line: int; character: int |}) > │ > = async { > │ > let fullPath = path |> System.IO.Path.GetFullPath > │ > let! code = fullPath |> > SpiralFileSystem.read_all_text_async > │ > let lines = code |> SpiralSm.split "\n" > │ > > │ > let struct (token, disposable) = > SpiralThreading.new_disposable_token > │ > cancellationToken > │ > use _ = disposable > │ > > │ > let port = port |> Option.defaultWith getCompilerPort > │ > // let! serverPort, _errors, ct, disposable = > awaitCompiler port (Some > │ > token) > │ > // use _ = disposable > │ > > │ > let fullPathUri = fullPath |> > SpiralFileSystem.normalize_path |> > │ > SpiralFileSystem.new_file_uri > │ > > │ > // let fileOpenObj = {| FileOpen = {| uri = > fullPathUri; spiText = code |} > │ > |} > │ > // let! _fileOpenResult = fileOpenObj |> sendObj > serverPort > │ > let fileOpenArgs = {| uri = fullPathUri; spiText = code > |} > │ > let! _fileOpenResult = > │ > server1.job_null (server1.supervisor *<+ > SupervisorReq.FileOpen > │ > fileOpenArgs) > │ > |> Async.AwaitTask > │ > > │ > // do! Async.Sleep 60 > │ > > │ > let hoverAtArgs = > │ > {| > │ > uri = fullPathUri > │ > pos = position > │ > |} > │ > > │ > let! hoverAtResult = > │ > server1.job_val (fun res -> server1.supervisor *<+ > │ > SupervisorReq.HoverAt(hoverAtArgs,res)) > │ > |> Async.AwaitTask > │ > > │ > let fileDir = fullPath |> > System.IO.Path.GetDirectoryName > │ > if fileDir |> SpiralSm.starts_with (workspaceRoot </> > "target") then > │ > let fileDirUri = fileDir |> > SpiralFileSystem.normalize_path |> > │ > SpiralFileSystem.new_file_uri > │ > // let fileDeleteObj = {| FileDelete = {| uris = > [[| fileDirUri |]] |} > │ > |} > │ > // let! _fileDeleteResult = fileDeleteObj |> > sendObj serverPort > │ > let fileDeleteArgs = {| uris = [[| fileDirUri |]] > |} > │ > let! _fileDeleteResult = > │ > server1.job_null (server1.supervisor *<+ > SupervisorReq.FileDelete > │ > fileDeleteArgs) > │ > |> Async.AwaitTask > │ > |> Async.runWithTimeoutAsync 60000 > │ > |> Async.map Option.get > │ > () > │ > > │ > return hoverAtResult |> Some > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## getCodeHoverAt > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let getCodeHoverAt cancellationToken code position = async > { > │ > let! mainPath, _ = > │ > persistCode {| input = Spi (code, None); backend = > None; packages = > │ > [[||]] |} > │ > > │ > let codeDir = mainPath |> > System.IO.Path.GetDirectoryName > │ > let filePath = codeDir </> "hover.json" > │ > let! output = async { > │ > if filePath |> System.IO.File.Exists |> not > │ > then return None > │ > else > │ > let! text = filePath |> > SpiralFileSystem.read_all_text_async > │ > > │ > return > │ > if text.Length > 2 > │ > then text |> Some > │ > else None > │ > } > │ > match output with > │ > | Some output -> > │ > return output |> Some > │ > | None -> return! getFileHoverAt None cancellationToken > mainPath position > │ > } > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > getCodeHoverAt None """inl main () = ()""" {| line = 0; > character = 4 |} > │ > |> Async.runWithTimeout 10000 > │ > |> Option.flatten > │ > |> _assertEqual (Some "() -> ()") > │ > > │ > ── [ 467.00ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ Some "() -> ()" > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > getCodeHoverAt None """inl main () = ()""" {| line = 0; > character = 0 |} > │ > |> Async.runWithTimeout 10000 > │ > |> Option.flatten > │ > |> _assertEqual (Some null) > │ > > │ > ── [ 438.72ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ Some null > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > getCodeHoverAt None """inl rec main () = main""" {| line = > 0; character = 8 |} > │ > |> Async.runWithTimeout 10000 > │ > |> Option.flatten > │ > |> _assertEqual (Some "forall 'a. () -> 'a") > │ > > │ > ── [ 473.35ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ Some "forall 'a. () -> 'a" > │ > │ > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > getCodeHoverAt None """inl main () = 1""" {| line = 0; > character = 4 |} > │ > |> Async.runWithTimeout 10000 > │ > |> Option.flatten > │ > |> _assertEqual (Some "forall 'a {number}. () -> 'a") > │ > > │ > ── [ 461.30ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ Some "forall 'a {number}. () -> 'a" > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## Arguments > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > [[<RequireQualifiedAccess>]] > │ > type Arguments = > │ > | Build_File of string * string > │ > | File_Token_Range of string * string > │ > | File_Hover_At of string * string * int * int > │ > | Execute_Command of string > │ > | [[<Argu.ArguAttributes.Unique>]] Timeout of int > │ > | [[<Argu.ArguAttributes.Unique>]] Port of int > │ > | [[<Argu.ArguAttributes.Unique>]] Parallel > │ > | [[<Argu.ArguAttributes.Unique>]] Exit_On_Error > │ > > │ > interface Argu.IArgParserTemplate with > │ > member s.Usage = > │ > match s with > │ > | Build_File _ -> nameof Build_File > │ > | File_Token_Range _ -> nameof File_Token_Range > │ > | File_Hover_At _ -> nameof File_Hover_At > │ > | Execute_Command _ -> nameof Execute_Command > │ > | Timeout _ -> nameof Timeout > │ > | Port _ -> nameof Port > │ > | Parallel -> nameof Parallel > │ > | Exit_On_Error-> nameof Exit_On_Error > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > Argu.ArgumentParser.Create<Arguments>().PrintUsage () > │ > > │ > ── [ 167.00ms - return value ] > ───────────────────────────────────────────────── > │ > │ "USAGE: dotnet-repl [--help] > [--build-file <string> <string>] > │ > │ [--file-token-range > <string> <string>] > │ > │ [--file-hover-at > <string> <string> <int> > │ > <int>] > │ > │ [--execute-command > <string>] [--timeout > │ > <int>] [--port <int>] > │ > │ [--parallel] > [--exit-on-error] > │ > │ > │ > │ OPTIONS: > │ > │ > │ > │ --build-file <string> <string> > │ > │ Build_File > │ > │ --file-token-range <string> <string> > │ > │ > File_Token_Range > │ > │ --file-hover-at <string> <string> > <int> <int> > │ > │ File_Hover_At > │ > │ --execute-command <string> > │ > │ > Execute_Command > │ > │ --timeout <int> Timeout > │ > │ --port <int> Port > │ > │ --parallel Parallel > │ > │ --exit-on-error Exit_On_Error > │ > │ --help display this > list of options. > │ > │ " > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## main > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let main args = > │ > SpiralTrace.TraceLevel.US0_1 |> set_trace_level > │ > let argsMap = args |> Runtime.parseArgsMap<Arguments> > │ > > │ > let buildFileActions = > │ > argsMap > │ > |> Map.tryFind (nameof Arguments.Build_File) > │ > |> Option.defaultValue [[]] > │ > |> List.choose (function > │ > | Arguments.Build_File (inputPath, outputPath) > -> Some (inputPath, > │ > outputPath) > │ > | _ -> None > │ > ) > │ > > │ > let fileTokenRangeActions = > │ > argsMap > │ > |> Map.tryFind (nameof Arguments.File_Token_Range) > │ > |> Option.defaultValue [[]] > │ > |> List.choose (function > │ > | Arguments.File_Token_Range (inputPath, > outputPath) -> Some > │ > (inputPath, outputPath) > │ > | _ -> None > │ > ) > │ > > │ > let fileHoverAtActions = > │ > argsMap > │ > |> Map.tryFind (nameof Arguments.File_Hover_At) > │ > |> Option.defaultValue [[]] > │ > |> List.choose (function > │ > | Arguments.File_Hover_At (inputPath, > outputPath, line, character) > │ > -> > │ > Some (inputPath, outputPath, line, > character) > │ > | _ -> None > │ > ) > │ > > │ > let executeCommandActions = > │ > argsMap > │ > |> Map.tryFind (nameof Arguments.Execute_Command) > │ > |> Option.defaultValue [[]] > │ > |> List.choose (function > │ > | Arguments.Execute_Command command -> Some > command > │ > | _ -> None > │ > ) > │ > > │ > let timeout = > │ > match argsMap |> Map.tryFind (nameof > Arguments.Timeout) with > │ > | Some [[ Arguments.Timeout timeout ]] -> timeout > │ > | _ -> 60002 * 60 * 24 > │ > > │ > let port = > │ > match argsMap |> Map.tryFind (nameof > Arguments.Port) with > │ > | Some [[ Arguments.Port port ]] -> Some port > │ > | _ -> None > │ > > │ > let isParallel = argsMap |> Map.containsKey (nameof > Arguments.Parallel) > │ > > │ > let isExitOnError = argsMap |> Map.containsKey (nameof > │ > Arguments.Exit_On_Error) > │ > > │ > async { > │ > let port = > │ > port > │ > |> Option.defaultWith getCompilerPort > │ > let struct (localToken, disposable) = > │ > SpiralThreading.new_disposable_token None > │ > // let! serverPort, _errors, compilerToken, > disposable = awaitCompiler > │ > port (Some localToken) > │ > let serverPort = port > │ > let struct (compilerToken, disposable) = > │ > SpiralThreading.new_disposable_token None > │ > use _ = disposable > │ > > │ > let buildFileAsync = > │ > buildFileActions > │ > |> List.map (fun (inputPath, outputPath) -> > async { > │ > let! _outputPath, outputCode, errors = > │ > let backend = > │ > if outputPath |> SpiralSm.ends_with > ".fsx" > │ > then Fsharp > │ > elif outputPath |> > SpiralSm.ends_with ".py" > │ > then Cuda > │ > elif outputPath |> > SpiralSm.ends_with ".gleam" > │ > then Gleam > │ > else failwith $"Supervisor.main / > invalid backend / > │ > outputPath: {outputPath}" > │ > let isReal = inputPath |> > SpiralSm.ends_with ".spir" > │ > inputPath |> buildFile backend timeout > (Some serverPort) > │ > None > │ > > │ > errors > │ > |> List.map snd > │ > |> List.iter (fun error -> > │ > trace Critical (fun () -> $"main / > error: {error |> > │ > serializeObj}") _locals > │ > ) > │ > > │ > match outputCode with > │ > | Some outputCode -> > │ > do! outputCode |> > SpiralFileSystem.write_all_text_exists > │ > outputPath > │ > return 0 > │ > | None -> > │ > if isExitOnError > │ > then SpiralRuntime.current_process_kill > () > │ > > │ > return 1 > │ > }) > │ > > │ > let fileTokenRangeAsync = > │ > fileTokenRangeActions > │ > |> List.map (fun (inputPath, outputPath) -> > async { > │ > let! tokenRange = inputPath |> > getFileTokenRange (Some > │ > serverPort) None > │ > match tokenRange with > │ > | Some tokenRange -> > │ > do! tokenRange |> > FSharp.Json.Json.serialize |> > │ > SpiralFileSystem.write_all_text_exists outputPath > │ > return 0 > │ > | None -> > │ > if isExitOnError > │ > then SpiralRuntime.current_process_kill > () > │ > > │ > return 1 > │ > }) > │ > > │ > let fileHoverAtAsync = > │ > fileHoverAtActions > │ > |> List.map (fun (inputPath, outputPath, line, > character) -> async { > │ > let! hoverAt = > │ > getFileHoverAt > │ > (Some serverPort) > │ > None > │ > inputPath > │ > {| line = line; character = > character |} > │ > match hoverAt with > │ > | Some hoverAt -> > │ > do! hoverAt |> > FSharp.Json.Json.serialize |> > │ > SpiralFileSystem.write_all_text_exists outputPath > │ > return 0 > │ > | None -> > │ > if isExitOnError > │ > then SpiralRuntime.current_process_kill > () > │ > > │ > return 1 > │ > }) > │ > > │ > let executeCommandAsync = > │ > executeCommandActions > │ > |> List.map (fun command -> async { > │ > let! exitCode, result = > │ > SpiralRuntime.execution_options (fun x > -> > │ > { x with > │ > l0 = command > │ > l1 = Some compilerToken > │ > } > │ > ) > │ > |> > SpiralRuntime.execute_with_options_async > │ > > │ > trace Debug (fun () -> $"main / > executeCommand / exitCode: > │ > {exitCode} / command: {command}") _locals > │ > > │ > if isExitOnError && exitCode <> 0 > │ > then SpiralRuntime.current_process_kill () > │ > > │ > return exitCode > │ > }) > │ > > │ > return! > │ > [[| buildFileAsync; fileTokenRangeAsync; > fileHoverAtAsync; > │ > executeCommandAsync |]] > │ > |> Seq.collect id > │ > |> fun x -> > │ > if isParallel > │ > then Async.Parallel (x, float > System.Environment.ProcessorCount > │ > * 0.51 |> ceil |> int) > │ > else Async.Sequential x > │ > |> Async.map Array.sum > │ > } > │ > |> Async.runWithTimeout timeout > │ > |> Option.defaultValue 1 > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let args = > │ > System.Environment.GetEnvironmentVariable "ARGS" > │ > |> SpiralRuntime.split_args > │ > |> Result.toArray > │ > |> Array.collect id > │ > > │ > match args with > │ > | [[||]] -> 0 > │ > | args -> if main args = 0 then 0 else failwith "main > failed" > │ > > │ > ── [ 117.38ms - return value ] > ───────────────────────────────────────────────── > │ > │ <div class="dni-plaintext"><pre>0 > │ > │ </pre></div><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ 00:02:41 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 169435 } > │ 00:02:41 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb", "--to", "html", > "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:02:42 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/apps/spiral/Supervisor.dib.ipynb to html > │ 00:02:42 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:02:42 v #7 ! validate(nb) > │ 00:02:43 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:02:43 v #9 ! return _pygments_highlight( > │ 00:02:44 v #10 ! [NbConvertApp] Writing 607045 bytes to > c:\home\git\polyglot\apps\spiral\Supervisor.dib.html > │ 00:02:44 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 864 } > │ 00:02:44 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 864 } > │ 00:02:45 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/apps/spiral/Supervisor.dib.html'; (Get-Content $path -Raw) > -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } > | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = > 'c:/home/git/polyglot/apps/spiral/Supervisor.dib.html'; (Get-Content $path -Raw) > -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | > Set-Content $path"; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:02:45 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:02:45 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:02:45 d #16 spiral.run / dib / { exit_code = 0; > result_length = 170358 } > │ 00:00:00 d #1 writeDibCode / output: Fs / path: > Supervisor.dib > │ 00:00:00 d #2 parseDibCode / output: Fs / file: > Supervisor.dib > │ 00:00:00 d #1 persistCodeProject / packages: [Argu; > FSharp.Control.AsyncSeq; FSharp.Json; ... ] / modules: > [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; > deps/spiral/lib/spiral/crypto.fsx; ... ] / name: Supervisor / hash: / > code.Length: 40313 > │ 00:00:00 d #2 buildProject / fullPath: > c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj > │ 00:00:00 d #1 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "c:/home/git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" > --runtime linux-x64"; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" > --runtime linux-x64; cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\Supervisor" } } > │ 00:00:01 v #2 > Determining projects to restore... > │ 00:00:01 v #3 > Paket version > 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 > │ 00:00:01 v #4 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:01 v #5 > Total time taken: 0 milliseconds > │ 00:00:02 v #6 > Restored > c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj (in 371 ms). > │ 00:00:12 v #7 > > c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(10087,85): > warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:13 v #8 > > c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(10612,85): > warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:13 v #9 > > c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(11436,43): > warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:13 v #10 > > c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(12366,43): > warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:14 v #11 > > c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(13032,71): > warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:16 v #12 > > c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fs(211,19): warning > FS0686: The method or function 'new_server' should not be given explicit type > argument(s) because it does not declare its type parameters explicitly > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:16 v #13 > > c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fs(212,19): warning > FS0686: The method or function 'new_server' should not be given explicit type > argument(s) because it does not declare its type parameters explicitly > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:34 v #14 > Supervisor -> > c:\home\git\polyglot\target\Builder\Supervisor\bin\Release\net9.0\linux-x64\Supe > rvisor.dll > │ 00:00:36 v #15 > Supervisor -> > C:\home\git\polyglot\apps\spiral\dist\ > │ 00:00:36 d #16 runtime.execute_with_options_async / { > exit_code = 0; output_length = 3503; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" > --runtime linux-x64; cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\Supervisor" } } > │ 00:00:36 d #17 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "c:/home/git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" > --runtime win-x64"; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" > --runtime win-x64; cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\Supervisor" } } > │ 00:00:37 v #18 > Determining projects to restore... > │ 00:00:37 v #19 > Paket version > 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 > │ 00:00:37 v #20 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:37 v #21 > Total time taken: 0 milliseconds > │ 00:00:38 v #22 > Restored > c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj (in 343 ms). > │ 00:00:49 v #23 > > c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(10087,85): > warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:49 v #24 > > c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(10612,85): > warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:50 v #25 > > c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(11436,43): > warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:50 v #26 > > c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(12366,43): > warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:51 v #27 > > c:\home\git\polyglot\deps\spiral\apps\compiler\spiral_compiler.fs(13032,71): > warning FS0040: This and other recursive references to the object(s) being > defined will be checked for initialization-soundness at runtime through the use > of a delayed reference. This is because you are defining one or more recursive > objects, rather than recursive functions. This warning may be suppressed by > using '#nowarn "40"' or '--nowarn:40'. > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:54 v #28 > > c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fs(211,19): warning > FS0686: The method or function 'new_server' should not be given explicit type > argument(s) because it does not declare its type parameters explicitly > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:00:54 v #29 > > c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fs(212,19): warning > FS0686: The method or function 'new_server' should not be given explicit type > argument(s) because it does not declare its type parameters explicitly > [c:\home\git\polyglot\target\Builder\Supervisor\Supervisor.fsproj] > │ 00:01:12 v #30 > Supervisor -> > c:\home\git\polyglot\target\Builder\Supervisor\bin\Release\net9.0\win-x64\Superv > isor.dll > │ 00:01:13 v #31 > Supervisor -> > C:\home\git\polyglot\apps\spiral\dist\ > │ 00:01:13 d #32 runtime.execute_with_options_async / { > exit_code = 0; output_length = 3501; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\Supervisor\Supervisor.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\spiral\dist" > --runtime win-x64; cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\Supervisor" } } > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "Eval.dib", "--retries", "3"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/apps/spiral/Eval.dib", "--output-path", > "c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb"]; options = { command = dotnet > repl --exit-after-run --run "c:/home/git/polyglot/apps/spiral/Eval.dib" > --output-path "c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb"; > cancellation_token = None; environment_variables = > Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = > None; stdin = None; trace = false; working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # Eval (Polyglot) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #r > │ > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > │ > dard2.1/FSharp.Control.AsyncSeq.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > │ > 0/System.Reactive.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > │ > netstandard2.0/System.Reactive.Linq.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com > │ > > mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli > │ > > ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0 > │ > /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0 > │ > /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/ > │ > > 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha > │ > rp.Json.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/system.management/7.0.0/lib/netstandard2. > │ > 0/System.Management.dll" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #r > │ > > @"../../../../../../../.nuget/packages/fsharpx.collections/3.1.0/lib/netstandard > │ > 2.0/FSharpx.Collections.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.Core > │ > .dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > │ > arsec.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > │ > arsecCS.dll" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll > │ > " > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstracti > │ > ons.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstractions. > │ > dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions. > │ > dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll" > │ > #endif > │ > > │ > #if _LINUX > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > │ > > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll" > │ > #else > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > │ > > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll" > │ > #endif > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.extensions.logging/9.0.0/lib/ne > │ > t9.0/Microsoft.Extensions.Logging.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.extensions.logging.abstractions > │ > > /9.0.0/lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/microsoft.extensions.dependencyinjection. > │ > > abstractions/9.0.0/lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstracti > │ > ons.dll" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > ── [ 1.90m - diagnostics ] > ───────────────────────────────────────────────────── > │ > │ input.fsx (10087,85)-(10087,88) > typecheck warning This and > │ > other recursive references to the object(s) being defined > will be checked for > │ > initialization-soundness at runtime through the use of a > delayed reference. This > │ > is because you are defining one or more recursive objects, > rather than recursive > │ > functions. This warning may be suppressed by using '#nowarn > "40"' or > │ > '--nowarn:40'. > │ > │ input.fsx (10612,85)-(10612,88) > typecheck warning This and > │ > other recursive references to the object(s) being defined > will be checked for > │ > initialization-soundness at runtime through the use of a > delayed reference. This > │ > is because you are defining one or more recursive objects, > rather than recursive > │ > functions. This warning may be suppressed by using '#nowarn > "40"' or > │ > '--nowarn:40'. > │ > │ input.fsx (11436,43)-(11436,49) > typecheck warning This and > │ > other recursive references to the object(s) being defined > will be checked for > │ > initialization-soundness at runtime through the use of a > delayed reference. This > │ > is because you are defining one or more recursive objects, > rather than recursive > │ > functions. This warning may be suppressed by using '#nowarn > "40"' or > │ > '--nowarn:40'. > │ > │ input.fsx (12366,43)-(12366,49) > typecheck warning This and > │ > other recursive references to the object(s) being defined > will be checked for > │ > initialization-soundness at runtime through the use of a > delayed reference. This > │ > is because you are defining one or more recursive objects, > rather than recursive > │ > functions. This warning may be suppressed by using '#nowarn > "40"' or > │ > '--nowarn:40'. > │ > │ input.fsx (13032,71)-(13032,74) > typecheck warning This and > │ > other recursive references to the object(s) being defined > will be checked for > │ > initialization-soundness at runtime through the use of a > delayed reference. This > │ > is because you are defining one or more recursive objects, > rather than recursive > │ > functions. This warning may be suppressed by using '#nowarn > "40"' or > │ > '--nowarn:40'. > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > open spiral_compiler > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > ── [ 10.11s - diagnostics ] > ──────────────────────────────────────────────────── > │ > │ input.fsx (211,19)-(211,29) typecheck > warning The method or > │ > function 'new_server' should not be given explicit type > argument(s) because it > │ > does not declare its type parameters explicitly > │ > │ input.fsx (212,19)-(212,29) typecheck > warning The method or > │ > function 'new_server' should not be given explicit type > argument(s) because it > │ > does not declare its type parameters explicitly > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #if !INTERACTIVE > │ > open Lib > │ > #endif > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > open Common > │ > open SpiralFileSystem.Operators > │ > open Microsoft.AspNetCore.SignalR.Client > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > open System > │ > open System.Collections.Generic > │ > open System.IO > │ > open System.Text > │ > open System.Threading > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## mapErrors > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline mapErrors (severity, errors, lastTopLevelIndex) > allCode = > │ > let allCodeLineLength = > │ > allCode |> SpiralSm.split "\n" |> Array.length > │ > > │ > errors > │ > |> List.map (fun (_, error) -> > │ > match error with > │ > | FatalError message -> > │ > ( > │ > severity, message, 0, ("", (0, 0), (0, 0)) > │ > ) > │ > |> List.singleton > │ > | TracedError data -> > │ > data.trace > │ > |> List.truncate 5 > │ > |> List.append [[ data.message ]] > │ > |> List.map (fun message -> > │ > ( > │ > severity, message, 0, ("", (0, 0), (0, > 0)) > │ > ) > │ > ) > │ > | PackageErrors data > │ > | TokenizerErrors data > │ > | ParserErrors data > │ > | TypeErrors data -> > │ > data.errors > │ > |> List.filter (fun ((rangeStart, _), _) -> > │ > trace Debug (fun () -> $"Eval.mapErrors / > rangeStart.line: > │ > {rangeStart.line} / lastTopLevelIndex: {lastTopLevelIndex} > / allCodeLineLength: > │ > {allCodeLineLength} / filtered: {rangeStart.line > > allCodeLineLength}") _locals > │ > rangeStart.line > allCodeLineLength > │ > ) > │ > |> List.map (fun ((rangeStart, rangeEnd), > message) -> > │ > ( > │ > severity, > │ > message, > │ > 0, > │ > ( > │ > (data.uri |> > System.IO.Path.GetFileName), > │ > ( > │ > (match lastTopLevelIndex with > │ > | Some i when rangeStart.line > >= i + > │ > allCodeLineLength + 3 -> > │ > rangeStart.line - > allCodeLineLength - 2 > │ > | _ -> rangeStart.line - > allCodeLineLength), > │ > (match lastTopLevelIndex with > │ > | Some i when rangeStart.line > >= i + > │ > allCodeLineLength + 3 -> > │ > rangeStart.character - 4 > │ > | _ -> rangeStart.character) > │ > ), > │ > ( > │ > (match lastTopLevelIndex with > │ > | Some i when rangeStart.line > >= i + > │ > allCodeLineLength + 3 -> > │ > rangeEnd.line - > allCodeLineLength - 2 > │ > | _ -> rangeEnd.line - > allCodeLineLength), > │ > (match lastTopLevelIndex with > │ > | Some i when rangeStart.line > >= i + > │ > allCodeLineLength + 3 -> > │ > rangeEnd.character - 4 > │ > | _ -> rangeEnd.character) > │ > ) > │ > ) > │ > ) > │ > ) > │ > ) > │ > |> List.collect id > │ > |> List.toArray > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### workspaceRoot > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let workspaceRoot = SpiralFileSystem.get_workspace_root () > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### targetDir > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let targetDir = workspaceRoot </> "target/spiral_Eval" > │ > [[ targetDir ]] > │ > |> List.iter (fun dir -> if Directory.Exists dir |> not > then > │ > Directory.CreateDirectory dir |> ignore) > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## allCode > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let mutable allCode = "" > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### allPackages > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let mutable allPackages : string [[]] = [[||]] > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## allCodeReal > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let mutable allCodeReal = "" > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## traceToggle > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let mutable traceToggle = false > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## startTokenRangeWatcher > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline startTokenRangeWatcher () = > │ > if [[ "dotnet-repl" ]] |> List.contains > spiral_compiler.assemblyName > │ > then new_disposable (fun () -> ()) > │ > else > │ > let tokensDir = targetDir </> "tokens" > │ > > │ > [[ tokensDir ]] > │ > |> List.iter (fun dir -> if Directory.Exists dir |> > not then > │ > Directory.CreateDirectory dir |> ignore) > │ > > │ > let stream, disposable = FileSystem.watchDirectory > (fun _ -> false) > │ > tokensDir > │ > > │ > try > │ > let existingFilesChild = > │ > tokensDir > │ > |> System.IO.Directory.GetDirectories > │ > |> Array.map (fun codeDir -> async { > │ > try > │ > let tokensPath = codeDir </> > "tokens.json" > │ > if tokensPath |> File.Exists |> not > then > │ > let spiralCodePath = codeDir > </> "main.spi" > │ > let spiralRealCodePath = > codeDir </> > │ > "main_real.spir" > │ > let spiralExists = > spiralCodePath |> > │ > System.IO.File.Exists > │ > let spiralRealExists = > spiralRealCodePath |> > │ > System.IO.File.Exists > │ > if spiralExists |> not && > spiralRealExists |> not > │ > then do! codeDir |> > │ > SpiralFileSystem.delete_directory_async |> Async.Ignore > │ > else > │ > let! tokens = > │ > if spiralExists then > spiralCodePath else > │ > spiralRealCodePath > │ > |> > Supervisor.getFileTokenRange None None > │ > match tokens with > │ > | Some tokens -> > │ > do! > │ > tokens > │ > |> > FSharp.Json.Json.serialize > │ > |> > SpiralFileSystem.write_all_text_async > │ > tokensPath > │ > | None -> > │ > trace Verbose (fun () > -> > │ > $"Eval.startTokenRangeWatcher / GetDirectories / tokens: > None") _locals > │ > with ex -> > │ > trace Critical (fun () -> > $"Eval.startTokenRangeWatcher > │ > / GetDirectories / ex: {ex |> SpiralSm.format_exception}") > _locals > │ > }) > │ > |> Async.Parallel > │ > |> Async.Ignore > │ > > │ > let streamAsyncChild = > │ > stream > │ > |> > FSharp.Control.AsyncSeq.iterAsyncParallel (fun (ticks, event) > │ > -> > │ > match event with > │ > | FileSystem.FileSystemChange.Changed > (codePath, _) > │ > when [[ "main.spi"; > "main_real.spir" ]] > │ > |> List.contains > (System.IO.Path.GetFileName > │ > codePath) > │ > -> > │ > async { > │ > let hashDir = codePath |> > │ > System.IO.Directory.GetParent > │ > let hashHex = hashDir.Name > │ > let codePath = tokensDir </> > codePath > │ > let tokensPath = tokensDir </> > hashHex </> > │ > "tokens.json" > │ > // do! Async.Sleep 30 > │ > let rec loop retry = async { > │ > let! tokens = codePath |> > │ > Supervisor.getFileTokenRange None None > │ > if retry = 3 || tokens <> > Some [[||]] > │ > then return tokens, retry > │ > else > │ > trace Debug > │ > (fun () -> > $"Eval.startTokenRangeWatcher > │ > / iterAsyncParallel") > │ > (fun () -> $"retry: > {retry} / tokens: > │ > %A{tokens}") > │ > do! Async.Sleep 30 > │ > return! loop (retry + > 1) > │ > } > │ > let! tokens, retries = loop 1 > │ > match tokens with > │ > | Some tokens -> > │ > do! > │ > tokens > │ > |> > FSharp.Json.Json.serialize > │ > |> > SpiralFileSystem.write_all_text_exists > │ > tokensPath > │ > | None -> > │ > trace Debug > │ > (fun () -> > $"Eval.startTokenRangeWatcher / > │ > iterAsyncParallel") > │ > (fun () -> $"retries: > {retries} / tokens: > │ > {tokens}") > │ > } > │ > |> Async.retryAsync 3 > │ > |> Async.map (Result.toOption >> > Option.defaultValue ()) > │ > | _ -> () |> Async.init > │ > ) > │ > > │ > async { > │ > do! Async.Sleep 3000 > │ > existingFilesChild |> Async.StartImmediate > │ > streamAsyncChild |> Async.Start > │ > } > │ > |> Async.Start > │ > with ex -> > │ > trace Critical (fun () -> > $"Eval.startTokenRangeWatcher / ex: {ex |> > │ > SpiralSm.format_exception}") _locals > │ > > │ > disposable > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## startCommandsWatcher > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let startCommandsWatcher (uriServer : string) = > │ > let commandsDir = targetDir </> "eval_commands" > │ > let commandHistoryDir = targetDir </> > "eval_command_history" > │ > [[ commandsDir; commandHistoryDir ]] > │ > |> List.iter (fun dir -> if Directory.Exists dir |> not > then > │ > Directory.CreateDirectory dir |> ignore) > │ > > │ > Directory.EnumerateFiles commandsDir |> Seq.iter > File.Delete > │ > > │ > let stream, disposable = > │ > commandsDir > │ > |> FileSystem.watchDirectory (function > │ > | FileSystem.FileSystemChange.Created _ -> true > │ > | _ -> false > │ > ) > │ > > │ > let connection = > HubConnectionBuilder().WithUrl(uriServer).Build() > │ > connection.StartAsync() |> Async.AwaitTask |> > Async.Start > │ > // let _ = connection.On<string>("ServerToClientMsg", > fun x -> > │ > // printfn $"ServerToClientMsg: '{x}'" > │ > // ) > │ > > │ > stream > │ > |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun > (ticks, event) -> async { > │ > let _locals () = $"ticks: {ticks} / event: {event} > / {_locals ()}" > │ > trace Verbose (fun () -> "Eval.startCommandsWatcher > / > │ > iterAsyncParallel") _locals > │ > > │ > match event with > │ > | FileSystem.FileSystemChange.Created (path, Some > json) -> > │ > try > │ > let fullPath = commandsDir </> path > │ > let! result = > │ > connection.InvokeAsync<string>("ClientToServerMsg", json) > |> Async.AwaitTask > │ > let commandHistoryPath = commandHistoryDir > </> path > │ > do! fullPath |> > SpiralFileSystem.move_file_async > │ > commandHistoryPath |> Async.Ignore > │ > if result |> SpiralSm.trim |> String.length > > 0 then > │ > let resultPath = commandHistoryDir </> > │ > $"{Path.GetFileNameWithoutExtension path}_result.json" > │ > do! result |> > SpiralFileSystem.write_all_text_async > │ > resultPath > │ > with ex -> > │ > let _locals () = $"ex: {ex |> > SpiralSm.format_exception} / > │ > {_locals ()}" > │ > trace Critical (fun () -> > "Eval.startCommandsWatcher / > │ > iterAsyncParallel") _locals > │ > | _ -> () > │ > }) > │ > |> Async.StartChild > │ > |> Async.Ignore > │ > |> Async.Start > │ > > │ > new_disposable (fun () -> > │ > disposable.Dispose () > │ > ) > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## prepareSpiral > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let prepareSpiral rawCellCode lines = > │ > let lastBlock = > │ > lines > │ > |> Array.tryFindBack (fun line -> > │ > line |> String.length > 0 > │ > && line.[[0]] <> ' ' > │ > ) > │ > > │ > let hasMain = > │ > lastBlock > │ > |> Option.exists (fun line -> > │ > line |> SpiralSm.starts_with "inl main " > │ > || line |> SpiralSm.starts_with "let main " > │ > ) > │ > > │ > if hasMain > │ > then rawCellCode, None > │ > else > │ > let lastTopLevelIndex, _ = > │ > (lines |> Array.indexed, (None, false)) > │ > ||> Array.foldBack (fun (i, line) > (lastTopLevelIndex, finished) -> > │ > // trace Verbose (fun () -> > $"Eval.prepareSpiral / i: {i} / > │ > line: '{line}' / lastTopLevelIndex: {lastTopLevelIndex} / > finished: {finished}") > │ > _locals > │ > match line with > │ > | _ when finished -> lastTopLevelIndex, > true > │ > | "" -> lastTopLevelIndex, false > │ > | line when > │ > line |> SpiralSm.starts_with " " > │ > || line |> SpiralSm.starts_with "// " > -> lastTopLevelIndex, > │ > false > │ > | line when > │ > line |> SpiralSm.starts_with "open " > │ > || line |> SpiralSm.starts_with > "prototype " > │ > || line |> SpiralSm.starts_with > "instance " > │ > || line |> SpiralSm.starts_with "type " > │ > || line |> SpiralSm.starts_with "union > " > │ > || line |> SpiralSm.starts_with > "nominal " -> > │ > lastTopLevelIndex, true > │ > | line when > │ > line |> SpiralSm.starts_with "inl " > │ > || line |> SpiralSm.starts_with "and " > │ > || line |> SpiralSm.starts_with "let " > -> > │ > let m = > │ > > System.Text.RegularExpressions.Regex.Match ( > │ > line, > │ > @"^(?:and +)?(inl|let) > +((?:[[{( > │ > ]]*)?[[~\(\w]]+[[\w\d']]*(?:|[[\w\d']]+[[ }]]*(?:&? > *[[\w\d']]*\))?| > │ > *[[~\w]][[\w\d']]*\)|, *[[~\w]][[\w\d']]*)) +[[:=]](?! > +function)" > │ > ) > │ > trace Verbose (fun () -> > $"Eval.prepareSpi / m: '{m}' / > │ > m.Groups.Count: {m.Groups.Count}") _locals > │ > if m.Groups.Count = 3 > │ > then Some i, false > │ > else lastTopLevelIndex, true > │ > | _ -> Some i, false > │ > ) > │ > let code = > │ > match lastTopLevelIndex with > │ > | Some lastTopLevelIndex -> > │ > lines > │ > |> Array.mapi (fun i line -> > │ > match i with > │ > | i when i < lastTopLevelIndex -> line > │ > | i when i = lastTopLevelIndex -> > $"\nlet main () =\n > │ > {line}" > │ > | _ when line |> SpiralSm.trim = "" -> > "" > │ > | _ -> $" {line}" > │ > ) > │ > |> SpiralSm.concat "\n" > │ > | None -> $"{rawCellCode}\n\ninl main () = > ()\n" > │ > code, lastTopLevelIndex > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## processSpiralOutput > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let processSpiralOutput > │ > (props : {| > │ > printCode: bool > │ > traceLevel: TraceLevel > │ > builderCommands: string array > │ > lastTopLevelIndex: int option > │ > backend: Supervisor.Backend > │ > cancellationToken: _ > │ > spiralErrors: _ > │ > code: string > │ > outputPath: string > │ > isReal: bool > │ > |}) > │ > = async { > │ > let inline _trace (fn : unit -> string) = > │ > if props.traceLevel = Verbose > │ > then trace Info (fun () -> > $"Eval.processSpiralOutput / props: {props |> > │ > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / > {fn ()}") _locals > │ > else fn () |> System.Console.WriteLine > │ > > │ > if props.printCode && props.backend <> Supervisor.Cuda > && props.backend <> > │ > Supervisor.Gleam then > │ > let ext = props.outputPath |> > System.IO.Path.GetExtension > │ > _trace (fun () -> if props.builderCommands.Length > > 0 then > │ > $"{ext}:\n{props.code}\n" else props.code) > │ > > │ > let workspaceRootExternal = > │ > let currentDir = > System.IO.Directory.GetCurrentDirectory () |> > │ > SpiralSm.to_lower > │ > let workspaceRoot = workspaceRoot |> > SpiralSm.to_lower > │ > if currentDir |> SpiralSm.starts_with workspaceRoot > │ > then None > │ > else Some workspaceRoot > │ > > │ > let! spiralBuilderResults = > │ > match props.builderCommands, > props.lastTopLevelIndex with > │ > | [[||]], _ | _, None -> [[||]] |> Async.init > │ > | builderCommands, _ -> > │ > builderCommands > │ > |> Array.map (fun builderCommand -> > │ > let path = > │ > workspaceRoot </> > │ > > $@"deps/spiral/workspace/target/release/spiral{SpiralPlatform.get_executable_suf > │ > fix ()}" > │ > |> System.IO.Path.GetFullPath > │ > let commands = > │ > if props.backend = Supervisor.Fsharp > │ > && ( > │ > builderCommand |> > SpiralSm.starts_with "rust" > │ > || builderCommand |> > SpiralSm.starts_with > │ > "typescript" > │ > || builderCommand |> > SpiralSm.starts_with "python" > │ > ) > │ > then [[| $"{path} fable --fs-path > \"{props.outputPath}\" > │ > --command \"{builderCommand}\"" |]] > │ > elif props.backend = Supervisor.Cuda > │ > && builderCommand |> > SpiralSm.starts_with "cuda" > │ > then [[| $"{path} {builderCommand} > --py-path > │ > \"{props.outputPath}\"" |]] > │ > elif props.backend = Supervisor.Gleam > │ > && builderCommand |> > SpiralSm.starts_with "gleam" > │ > then [[| $"{path} {builderCommand} > --gleam-path > │ > \"{props.outputPath}\"" |]] > │ > else [[||]] > │ > builderCommand, commands > │ > ) > │ > |> Array.filter (fun (_, commands) -> > commands.Length > 0) > │ > |> Array.collect (fun (builderCommand, > commands) -> > │ > commands > │ > |> Array.map (fun command -> async { > │ > let! exitCode, result = > │ > SpiralRuntime.execution_options > (fun x -> > │ > { x with > │ > l0 = command > │ > l1 = > props.cancellationToken > │ > l2 = [[| > │ > "AUTOMATION", > spiral_compiler.assemblyName = > │ > "dotnet-repl" |> string > │ > "TRACE_LEVEL", $"%A{if > props.printCode then > │ > props.traceLevel else Info}" > │ > |]] > │ > l6 = workspaceRootExternal > │ > } > │ > ) > │ > |> > SpiralRuntime.execute_with_options_async > │ > trace Debug > │ > (fun () -> > $"Eval.processSpiralOutput / spiral cli") > │ > (fun () -> $"exitCode: {exitCode} / > builderCommand: > │ > {builderCommand} / command: {command} / result: {result |> > SpiralSm.ellipsis_end > │ > 400} / {_locals ()}") > │ > return > │ > if exitCode = 0 > │ > then {| code = result; eval = > false; builderCommand = > │ > builderCommand |} |> Ok > │ > else result |> Error > │ > }) > │ > ) > │ > |> Async.Parallel > │ > > │ > let hasEval = > │ > props.backend = Supervisor.Fsharp > │ > && props.builderCommands |> Array.exists (fun x -> > x |> > │ > SpiralSm.starts_with "fsharp") > │ > > │ > let outputResult = > │ > if props.builderCommands.Length > 0 && not hasEval > │ > then None > │ > else > │ > let code = > │ > if props.builderCommands.Length > 1 > │ > then > │ > let header = "System.Console.WriteLine > \".fsx output:\"\n" > │ > $"{header}{props.code}" > │ > else props.code > │ > Some (Ok [[ {| code = code; eval = true; > builderCommand = "" |} ]]) > │ > > │ > match outputResult, spiralBuilderResults with > │ > | Some outputResult, [[||]] -> > │ > return outputResult, [[||]] > │ > | None, [[||]] -> > │ > return Ok [[ {| code = "()"; eval = true; > builderCommand = "" |} ]], > │ > [[||]] > │ > | _, spiralBuilderResults -> > │ > try > │ > let spiralResults = > │ > match outputResult with > │ > | Some (Ok code) -> > │ > spiralBuilderResults > │ > |> Array.append (code |> List.map Ok |> > List.toArray) > │ > | _ -> spiralBuilderResults > │ > let codes = > │ > spiralResults > │ > |> Array.map (fun spiralBuilderResult' -> > │ > let commandResult, errors = > │ > match spiralBuilderResult' with > │ > | Ok result when result.eval = > false -> > │ > let result' = > │ > result.code > │ > |> > │ > FSharp.Json.Json.deserialize<Map<string,string>> > │ > let result = > │ > match result' |> > Map.tryFind "command_result" > │ > with > │ > | Some result'' -> > │ > result'' > │ > |> > │ > FSharp.Json.Json.deserialize<Map<string,string>> > │ > |> Map.add > "builderCommand" > │ > result.builderCommand > │ > | None -> Map.empty > │ > result, [[||]] > │ > | Ok result when result.eval = true > -> > │ > let result = > │ > [[ > │ > "extension", "fsx" > │ > "code", result.code > │ > "output", "" > │ > ]] > │ > |> Map.ofList > │ > result, [[||]] > │ > | Error error -> > │ > Map.empty, > │ > [[| > │ > ( > │ > TraceLevel.Critical, > │ > $"Eval.processSpiralOutput / evalResult error / errors[[0]] > / outputPath: > │ > {props.outputPath} / builderCommands: > %A{props.builderCommands} / > │ > spiralBuilderResult': %A{spiralBuilderResult'} / error: > %A{error}", 0, ("", (0, > │ > 0), (0, 0)) > │ > ) > │ > |]] > │ > | _ -> > │ > Map.empty, [[||]] > │ > > │ > if errors |> Array.isEmpty |> not > │ > then Error (Exception > $"Eval.processSpiralOutput / > │ > evalResult errors / Exception / commandResult: > %A{commandResult}"), errors > │ > else > │ > let extension = > commandResult.[["extension"]] > │ > let code = commandResult.[["code"]] > │ > let output = > commandResult.[["output"]] > │ > let builderCommand = > │ > commandResult > │ > |> Map.tryFind "builderCommand" > │ > |> Option.defaultValue "" > │ > > │ > let backendInfo = > │ > match props.backend, > builderCommand with > │ > | Supervisor.Fsharp, > builderCommand > │ > when builderCommand |> > SpiralSm.contains " " -> > │ > $" ({builderCommand})" > │ > | Supervisor.Fsharp, _ -> "" > │ > | _ -> $" ({props.backend})" > │ > > │ > let eval = output = "" && extension > = "fsx" > │ > > │ > if props.printCode && not eval > │ > then _trace (fun () -> > │ > $""".{extension}{backendInfo}:{'\n'}{code}""") > │ > > │ > trace Debug > │ > (fun () -> > $"Eval.processSpiralOutput / result") > │ > (fun () -> $"builderCommand: > {builderCommand} / > │ > extension: {extension} / commandResult: {commandResult |> > │ > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400}/ > {_locals ()}") > │ > > │ > let code = > │ > if props.printCode > │ > || spiralResults.Length > 1 > │ > || > props.builderCommands.Length > 1 > │ > then > │ > if eval > │ > then code > │ > else > │ > let header = > $".{extension} > │ > output{backendInfo}:\n" > │ > $"""{if output |> > SpiralSm.contains "\n" > │ > then "\n" else ""}{header}{output}""" > │ > elif eval > │ > then code > │ > else output > │ > Ok {| code = code; eval = eval; > builderCommand = > │ > builderCommand |}, [[||]] > │ > ) > │ > trace Debug > │ > (fun () -> $"Eval.processSpiralOutput / > codes") > │ > (fun () -> > │ > let props = {| props with > cancellationToken = None |} > │ > $"codes: {codes |> > FSharp.Json.Json.serialize |> > │ > SpiralSm.ellipsis_end 400} / spiralResults: {spiralResults > |> > │ > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / > spiralBuilderResults: > │ > {spiralBuilderResults |> FSharp.Json.Json.serialize |> > SpiralSm.ellipsis_end > │ > 400} / props: {props |> FSharp.Json.Json.serialize |> > SpiralSm.ellipsis_end 400} > │ > / {_locals ()}") > │ > return > │ > (((Ok [[]]), [[||]]), codes) > │ > ||> Array.fold (fun (acc_code, acc_errors) > (code, errors) -> > │ > match code, acc_code with > │ > | Ok code, Ok acc_code -> > │ > let errors = > │ > acc_errors > │ > |> Array.append errors > │ > |> Array.append > props.spiralErrors > │ > let errors = > │ > if errors |> Array.isEmpty > │ > then errors > │ > else > │ > let code = $"%A{code}" > │ > errors > │ > |> Array.append [[| > │ > TraceLevel.Critical, > │ > $"Eval.processSpiralOutput / errors / errors[[-1]] / > outputPath: > │ > {props.outputPath} / builderCommands: > %A{props.builderCommands} / code: {code |> > │ > SpiralSm.ellipsis_end 400}", 0, ("", (0, 0), (0, 0)) > │ > |]] > │ > Ok (code :: acc_code), errors > │ > | Error ex, _ > │ > | _, Error ex -> > │ > Error (Exception > $"Eval.processSpiralOutput / -1 / > │ > Exception / spiralBuilderResults: %A{spiralBuilderResults} > / ex: {ex |> > │ > SpiralSm.format_exception}"), > │ > acc_errors |> Array.append errors > │ > ) > │ > with ex -> > │ > trace Critical (fun () -> > $"Eval.processSpiralOutput / try 2 ex / > │ > spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |>│ > SpiralSm.format_exception}") _locals > │ > return > │ > Error (Exception $"Eval.processSpiralOutput > / try 2 ex / > │ > Exception / spiralBuilderResults: %A{spiralBuilderResults} > / ex: {ex |> > │ > SpiralSm.format_exception}"), > │ > [[| > │ > ( > │ > TraceLevel.Critical, > $"Eval.processSpiralOutput / try 2 > │ > ex / errors[[0]] / spiralBuilderResults: > %A{spiralBuilderResults} / ex: {ex |> > │ > SpiralSm.format_exception}", 0, ("", (0, 0), (0, 0)) > │ > ) > │ > |]] > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## tryGetPropertyValue > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let tryGetPropertyValue (propertyName: string) (obj: obj) = > │ > let objType = obj.GetType () > │ > let propertyInfo = propertyName |> objType.GetProperty > │ > if propertyInfo <> null > │ > then propertyInfo.GetValue (obj, null) |> Some > │ > else None > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## evalAsync > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let rec evalAsync > │ > retry > │ > (props : {| > │ > rawCellCode: _ > │ > lines: _ > │ > isReal: _ > │ > builderCommands: _ array > │ > isCache: _ > │ > timeout: _ > │ > cancellationToken: _ > │ > printCode: _ > │ > traceLevel: _ > │ > fsi_eval: _ > │ > |}) > │ > = async { > │ > try > │ > let cellCode, lastTopLevelIndex = prepareSpiral > props.rawCellCode > │ > props.lines > │ > let newAllCode = > │ > if props.isReal > │ > then $"{allCodeReal}\n\n{cellCode}" > │ > else $"{allCode}\n\n{cellCode}" > │ > > │ > let buildBackends = > │ > if props.builderCommands.Length = 0 > │ > then [[| Supervisor.Fsharp |]] > │ > else > │ > props.builderCommands > │ > |> Array.map (fun x -> > │ > if x |> SpiralSm.starts_with "cuda" > │ > then Supervisor.Cuda > │ > elif x |> SpiralSm.starts_with "gleam" > │ > then Supervisor.Gleam > │ > else Supervisor.Fsharp > │ > ) > │ > |> Array.distinct > │ > > │ > trace Verbose > │ > (fun () -> $"Eval.eval") > │ > (fun () -> $"lastTopLevelIndex: > {lastTopLevelIndex} / > │ > builderCommands: %A{props.builderCommands} / buildBackends: > %A{buildBackends} / > │ > isReal: {props.isReal} / {_locals ()}") > │ > > │ > let! buildCodeResults = > │ > buildBackends > │ > |> Array.map (fun backend -> async { > │ > let! result = > │ > if props.isReal > │ > then Supervisor.Spir newAllCode > │ > else > │ > Supervisor.Spi > │ > (newAllCode, if allCodeReal = > "" then None else Some > │ > allCodeReal) > │ > |> Supervisor.buildCode backend > allPackages props.isCache > │ > props.timeout props.cancellationToken > │ > return backend, result > │ > }) > │ > |> Async.Parallel > │ > |> Async.catch > │ > |> Async.runWithTimeoutAsync props.timeout > │ > > │ > match buildCodeResults with > │ > | Some (Ok buildCodeResults) -> > │ > let! result, errors = > │ > ((Ok [[]], [[||]]), buildCodeResults) > │ > ||> Async.fold (fun acc buildCodeResult -> > async { > │ > match buildCodeResult with > │ > | backend, (_, (outputPath, Some code), > spiralErrors) -> > │ > let spiralErrors = > │ > allCode |> mapErrors (Warning, > spiralErrors, > │ > lastTopLevelIndex) > │ > let! result = > │ > processSpiralOutput > │ > {| > │ > printCode = > props.printCode > │ > traceLevel = > props.traceLevel > │ > builderCommands = > props.builderCommands > │ > lastTopLevelIndex = > lastTopLevelIndex > │ > backend = backend > │ > cancellationToken = > props.cancellationToken > │ > spiralErrors = > spiralErrors > │ > code = code > │ > outputPath = outputPath > │ > isReal = props.isReal > │ > |} > │ > match result, acc with > │ > | (Ok code, errors), (Ok acc_code, > acc_errors) -> > │ > return Ok (acc_code @ code), > acc_errors |> > │ > Array.append errors > │ > | (Error ex, errors), _ | _, (Error > ex, errors) -> > │ > return > │ > Error (Exception > $"Eval.evalAsync / > │ > processSpiralOutput / Exception / buildCodeResult: > %A{buildCodeResult |> > │ > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / > ex: {ex |> > │ > SpiralSm.format_exception}"), > │ > errors |> Array.append > errors > │ > | _, (_, _, errors) when errors |> > List.isEmpty |> not -> > │ > return errors.[[0]] |> fst |> > Exception |> Error, > │ > allCode |> mapErrors > (TraceLevel.Critical, errors, > │ > lastTopLevelIndex) > │ > | _ -> return acc > │ > }) > │ > let cancellationToken = defaultArg > props.cancellationToken > │ > System.Threading.CancellationToken.None > │ > match result, errors with > │ > | Ok code, [[||]] -> > │ > let code, eval = > │ > code > │ > |> List.map (fun code -> > │ > if code.eval > │ > then None, Some code.code > │ > else Some code.code, None > │ > ) > │ > |> List.unzip > │ > let code = code |> List.choose id > │ > let eval = eval |> List.choose id > │ > > │ > trace Debug > │ > (fun () -> $"Eval.eval") > │ > (fun () -> $"eval: {eval |> > FSharp.Json.Json.serialize |> > │ > SpiralSm.ellipsis_end 400} / code: {code |> > FSharp.Json.Json.serialize |> > │ > SpiralSm.ellipsis_end 400} / {_locals ()}") > │ > > │ > let ch, errors = > │ > match eval, code with > │ > | [[]], [[]] -> > │ > Choice2Of2 (Exception > $"Eval.evalAsync / eval=[[]] / > │ > code=[[]] / buildCodeResults: %A{buildCodeResults} / code: > %A{code}"), errors > │ > | [[ eval ]], [[]] -> > │ > let eval = > │ > if eval |> SpiralSm.contains > "<script" > │ > then $"{eval}, \"text/html1\"" > │ > else eval > │ > let ch, errors2 = props.fsi_eval > eval cancellationToken > │ > let errors = > │ > errors2 > │ > // |> Array.map (fun (e1, e2, > e3, _) -> > │ > // (e1, e2, e3, ("", (0, > 0), (0, 0))) > │ > // ) > │ > |> Array.append errors > │ > ch, errors > │ > | [[]], _ -> > │ > let code = code |> List.rev |> > String.concat "\n\n" > │ > let code = > │ > if props.printCode > │ > then $"\"\"\"{code}\n\n\"\"\"" > │ > else $"\"\"\"{code}\n\"\"\"" > │ > let code = > │ > if code |> SpiralSm.contains > "<script" > │ > then $"{code}, \"text/html2\"" > │ > else code > │ > let ch, errors2 = props.fsi_eval > code cancellationToken > │ > let errors = > │ > errors2 > │ > // |> Array.map (fun (e1, e2, > e3, _) -> > │ > // (e1, e2, e3, ("", (0, > 0), (0, 0))) > │ > // ) > │ > |> Array.append errors > │ > ch, errors > │ > | _ -> > │ > let code, errors = > │ > ((Ok (code |> List.rev), > [[||]]), eval) > │ > ||> List.fold (fun (acc, > acc_errors) eval -> > │ > match acc with > │ > | Error ch -> Error ch, > acc_errors > │ > | Ok acc -> > │ > let eval = > │ > if eval |> > SpiralSm.contains "<script" > │ > then $"{eval}, > \"text/html3\"" > │ > else eval > │ > let ch, errors = > props.fsi_eval eval > │ > cancellationToken > │ > let errors = > │ > errors > │ > // |> Array.map > (fun (e1, e2, e3, _) -> > │ > // (e1, e2, e3, > ("", (0, 0), (0, > │ > 0))) > │ > // ) > │ > |> Array.append > acc_errors > │ > match ch with > │ > | Choice1Of2 v -> > │ > let v = > │ > v > │ > |> > tryGetPropertyValue > │ > "ReflectionValue" > │ > |> Option.map > (fun x -> $"%A{x}") > │ > |> > Option.defaultValue "" > │ > Ok (v :: acc), > errors > │ > | Choice2Of2 ex -> > │ > trace Critical (fun > () -> > │ > $"Eval.evalAsync / fsi_eval fold Choice error / > buildCodeResults: > │ > %A{buildCodeResults} / ex: {ex |> > SpiralSm.format_exception}") _locals > │ > Error ch, errors > │ > ) > │ > match code with > │ > | Error ch -> ch, errors > │ > | Ok code -> > │ > let code = > │ > code > │ > |> List.filter ((<>) "") > │ > |> String.concat "\n\n" > │ > > │ > let code = > │ > if > props.builderCommands.Length > 0 && > │ > eval.Length = 0 > │ > then code > │ > elif code |> > SpiralSm.contains "\n\n\n" > │ > then $"{code}\n\n" > │ > else $"{code}\n" > │ > > │ > let code = > │ > if props.printCode > │ > then > $"\"\"\"{code}\n\n\n\"\"\"" > │ > else > $"\"\"\"{code}\n\"\"\"" > │ > let code = > │ > if code |> > SpiralSm.contains "<script" > │ > then $"{code}, > \"text/html4\"" > │ > else code > │ > let ch, errors2 = > props.fsi_eval code > │ > cancellationToken > │ > let errors = > │ > errors2 > │ > // |> Array.map (fun (e1, > e2, e3, _) -> > │ > // (e1, e2, e3, ("", > (0, 0), (0, 0))) > │ > // ) > │ > |> Array.append errors > │ > ch, errors > │ > match ch with > │ > | Choice1Of2 v -> > │ > if props.isReal > │ > then allCodeReal <- newAllCode > │ > else allCode <- newAllCode > │ > return Ok(v), errors > │ > | Choice2Of2 ex -> > │ > return > │ > Error (Exception $"Eval.evalAsync / > -2 / Exception / ex: > │ > {ex |> SpiralSm.format_exception} / buildCodeResults: > {buildCodeResults |> > │ > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400}"), > │ > errors > │ > | Ok code, errors -> > │ > return > │ > Error (Exception "Eval.evalAsync / > errors / > │ > buildCodeResults: %A{buildCodeResults} / code: %A{code}"), > │ > errors > │ > | Error ex, errors -> > │ > let ex = ex |> SpiralSm.format_exception > │ > if retry <= 3 && > │ > (ex |> SpiralSm.contains "Expected one > of: inl, let, union, > │ > nominal, prototype, type, instance, and, open") > │ > || (ex |> SpiralSm.contains "Unexpected > end of block past > │ > this token.") > │ > then return! evalAsync (retry + 1) props > │ > else > │ > return > │ > Error (Exception $"Eval.evalAsync / > -1 / Exception / ex: > │ > {ex} / buildCodeResults: {buildCodeResults |> > FSharp.Json.Json.serialize |> > │ > SpiralSm.ellipsis_end 1500}"), > │ > errors > │ > | Some (Error ex) -> > │ > trace Critical (fun () -> $"Eval.evalAsync / > buildCodeResults Error > │ > / buildCodeResults: %A{buildCodeResults} / ex: {ex |> > │ > SpiralSm.format_exception}") _locals > │ > return > │ > Error (Exception $"Eval.evalAsync / > buildCodeResults Error / > │ > Exception / buildCodeResults: %A{buildCodeResults} / ex: > {ex |> > │ > SpiralSm.format_exception}"), > │ > [[| > │ > ( > │ > TraceLevel.Critical, > $"Eval.evalAsync / buildCodeResults > │ > Error / errors[[0]] / ex: {ex |> SpiralSm.format_exception} > / buildCodeResults: > │ > %A{buildCodeResults}", 0, ("", (0, 0), (0, 0)) > │ > ) > │ > |]] > │ > | _ -> > │ > return > │ > Error (Exception $"Eval.evalAsync / > buildCodeResults / Exception > │ > / buildCodeResults: %A{buildCodeResults}"), > │ > [[| > │ > ( > │ > TraceLevel.Critical, > $"Eval.evalAsync / buildCodeResults > │ > / errors[[0]] / buildCodeResults: %A{buildCodeResults}", 0, > ("", (0, 0), (0, 0)) > │ > ) > │ > |]] > │ > with ex -> > │ > trace Critical (fun () -> $"Eval.evalAsync / try 1 > ex / ex: {ex |> > │ > SpiralSm.format_exception} / lines: %A{props.lines}") > _locals > │ > return > │ > Error (Exception $"Eval.evalAsync / try 1 ex / > Exception / ex: {ex > │ > |> SpiralSm.format_exception} / lines: %A{props.lines}"), > │ > [[| > │ > ( > │ > TraceLevel.Critical, $"Eval.evalAsync / > try 1 ex / > │ > errors[[0]] / ex: {ex |> SpiralSm.format_exception} / > lines: %A{props.lines}", > │ > 0, ("", (0, 0), (0, 0)) > │ > ) > │ > |]] > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## eval > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let inline eval > │ > (fsi_eval: > │ > string > │ > -> System.Threading.CancellationToken > │ > -> Choice<'a, Exception> * (TraceLevel * string * > int * (string * (int * > │ > int) * (int * int))) array) > │ > (cancellationToken: > Option<System.Threading.CancellationToken>) > │ > (code: string) > │ > = > │ > trace Verbose > │ > (fun () -> $"Eval.eval") > │ > (fun () -> $"code: {code |> SpiralSm.ellipsis_end > 400} / {_locals ()}") > │ > > │ > let rawCellCode = > │ > code |> SpiralSm.replace "\r\n" "\n" > │ > > │ > let lines = rawCellCode |> SpiralSm.split "\n" > │ > > │ > if lines |> Array.exists (fun line -> line |> > SpiralSm.starts_with "#r " && > │ > line |> SpiralSm.ends_with "\"") then > │ > let cancellationToken = defaultArg > cancellationToken > │ > System.Threading.CancellationToken.None > │ > let code = > │ > if code |> SpiralSm.contains "<script" > │ > then $"{code}, \"text/html5\"" > │ > else code > │ > let ch, errors = fsi_eval code cancellationToken > │ > trace Verbose (fun () -> $"Eval.eval / fsi_eval 1 / > ch: %A{ch} / errors: > │ > %A{errors}") _locals > │ > match ch with > │ > | Choice1Of2 v -> Ok(v), errors > │ > | Choice2Of2 ex -> Error(ex), errors > │ > else > │ > let builderCommands = > │ > lines > │ > |> Array.choose (fun line -> > │ > if line |> SpiralSm.starts_with "///! " > │ > then line |> SpiralSm.split "///! " |> > Array.tryItem 1 > │ > else None > │ > ) > │ > > │ > let packages = > │ > lines > │ > |> Array.choose (fun line -> > │ > if line |> SpiralSm.starts_with "//// > package=" > │ > then line |> SpiralSm.split "=" |> > Array.skip 1 |> > │ > SpiralSm.concat "" |> Some > │ > else None > │ > ) > │ > > │ > allPackages <- packages |> Array.append allPackages > |> Array.distinct > │ > > │ > let timeout = > │ > lines > │ > |> Array.tryPick (fun line -> > │ > if line |> SpiralSm.starts_with "//// > timeout=" > │ > then line |> SpiralSm.split "=" |> > Array.tryItem 1 |> Option.map > │ > int > │ > else None > │ > ) > │ > |> Option.defaultValue (60003 * 60 * 24) > │ > > │ > let boolArg def command = > │ > lines > │ > |> Array.tryPick (fun line -> > │ > let text = $"//// {command}" > │ > match line.[[0..text.Length-1]], > line.[[text.Length..]] with > │ > | head, "" when head = text -> > │ > Some true > │ > | head, _ when head = text -> > │ > line |> SpiralSm.split "=" |> > Array.tryItem 1 |> Option.map > │ > ((<>) "false") > │ > | _ -> None > │ > ) > │ > |> Option.defaultValue def > │ > > │ > let printCode = "print_code" |> boolArg false > │ > let isTraceToggle = "trace_toggle" |> boolArg false > │ > let isTrace = "trace" |> boolArg false > │ > let isCache = "cache" |> boolArg false > │ > let isReal = "real" |> boolArg false > │ > let timeout_continue = "timeout_continue" |> > boolArg false > │ > > │ > if isTraceToggle > │ > then traceToggle <- not traceToggle > │ > > │ > let oldLevel = get_trace_level () > │ > let traceLevel = > │ > if isTrace || traceToggle > │ > then Verbose > │ > else Info > │ > traceLevel > │ > |> to_trace_level > │ > |> set_trace_level > │ > use _ = (new_disposable (fun () -> > │ > oldLevel |> set_trace_level > │ > )) > │ > > │ > evalAsync 1 > │ > {| > │ > rawCellCode = rawCellCode > │ > lines = lines > │ > isReal = isReal > │ > builderCommands = builderCommands > │ > isCache = isCache > │ > timeout = timeout > │ > cancellationToken = cancellationToken > │ > printCode = printCode > │ > traceLevel = traceLevel > │ > fsi_eval = fsi_eval > │ > |} > │ > |> Async.runWithTimeout timeout > │ > |> (fun x -> > │ > match x with > │ > | Some ((Ok x), a) -> Some ((Ok x), a) > │ > | Some ((Error x), a) -> > │ > trace Info (fun () -> $"Eval.eval / error / > exception: > │ > {x.GetType().FullName} / a: %A{a} / x: %A{x}") (fun () -> > "") > │ > Some ((Error x), a) > │ > | _ -> None > │ > ) > │ > |> Option.defaultWith (fun () -> ( > │ > let lines = lines |> SpiralSm.concat (string > '\n') |> > │ > SpiralSm.ellipsis_end 1500 > │ > in > │ > Error (Exception $"Eval.eval / > Async.runWithTimeout / Exception / > │ > timeout: {timeout} / timeout_continue: {timeout_continue} / > lines: {lines}"), > │ > [[| > │ > ( > │ > TraceLevel.Critical, $"Eval.eval / > Async.runWithTimeout / > │ > errors[[0]] / timeout: {timeout} / lines: {lines}", 0, ("", > (0, 0), (0, 0)) > │ > ) > │ > |]] > │ > )) > │ 00:02:31 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 56111 } > │ 00:02:31 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb", "--to", "html", > "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:02:33 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/apps/spiral/Eval.dib.ipynb to html > │ 00:02:33 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:02:33 v #7 ! validate(nb) > │ 00:02:33 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:02:33 v #9 ! return _pygments_highlight( > │ 00:02:34 v #10 ! [NbConvertApp] Writing 463701 bytes to > c:\home\git\polyglot\apps\spiral\Eval.dib.html > │ 00:02:34 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 852 } > │ 00:02:34 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 852 } > │ 00:02:34 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/apps/spiral/Eval.dib.html'; (Get-Content $path -Raw) > -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } > | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = > 'c:/home/git/polyglot/apps/spiral/Eval.dib.html'; (Get-Content $path -Raw) > -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | > Set-Content $path"; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:02:35 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:02:35 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:02:35 d #16 spiral.run / dib / { exit_code = 0; > result_length = 57022 } > │ 00:00:00 d #1 writeDibCode / output: Fs / path: Eval.dib > │ 00:00:00 d #2 parseDibCode / output: Fs / file: Eval.dib > │ polyglot/apps/spiral/build.ps1 / $env:CI:'' > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../lib/fsharp/build.ps1 -sequential 1 } | Invoke-Block > > ── [ 2.52m - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 runtime.execute_with_options_async / { > file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = > US5_0 "dib --path Async.dib --retries 3"; options = { command = > ../../deps/spiral/workspace/target/release/spiral.exe dib --path Async.dib > --retries 3; cancellation_token = Some System.Threading.CancellationToken; > environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:22 d #2 runtime.execute_with_options_async / { > exit_code = 0; output_length = 19529; options = { command = > ../../deps/spiral/workspace/target/release/spiral.exe dib --path Async.dib > --retries 3; cancellation_token = Some System.Threading.CancellationToken; > environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:22 d #1 main / executeCommand / exitCode: 0 / > command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path > Async.dib --retries 3 > │ 00:00:22 d #3 runtime.execute_with_options_async / { > file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = > US5_0 "dib --path AsyncSeq.dib --retries 3"; options = { command = > ../../deps/spiral/workspace/target/release/spiral.exe dib --path AsyncSeq.dib > --retries 3; cancellation_token = Some System.Threading.CancellationToken; > environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:45 d #4 runtime.execute_with_options_async / { > exit_code = 0; output_length = 11796; options = { command = > ../../deps/spiral/workspace/target/release/spiral.exe dib --path AsyncSeq.dib > --retries 3; cancellation_token = Some System.Threading.CancellationToken; > environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:45 d #2 main / executeCommand / exitCode: 0 / > command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path > AsyncSeq.dib --retries 3 > │ 00:00:45 d #5 runtime.execute_with_options_async / { > file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = > US5_0 "dib --path Common.dib --retries 3"; options = { command = > ../../deps/spiral/workspace/target/release/spiral.exe dib --path Common.dib > --retries 3; cancellation_token = Some System.Threading.CancellationToken; > environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:01:04 d #6 runtime.execute_with_options_async / { > exit_code = 0; output_length = 5506; options = { command = > ../../deps/spiral/workspace/target/release/spiral.exe dib --path Common.dib > --retries 3; cancellation_token = Some System.Threading.CancellationToken; > environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:01:04 d #3 main / executeCommand / exitCode: 0 / > command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path > Common.dib --retries 3 > │ 00:01:04 d #7 runtime.execute_with_options_async / { > file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = > US5_0 "dib --path CommonFSharp.dib --retries 3"; options = { command = > ../../deps/spiral/workspace/target/release/spiral.exe dib --path > CommonFSharp.dib --retries 3; cancellation_token = Some > System.Threading.CancellationToken; environment_variables = [||]; on_line = > None; stdin = None; trace = true; working_directory = None } } > │ 00:01:24 d #8 runtime.execute_with_options_async / { > exit_code = 0; output_length = 4477; options = { command = > ../../deps/spiral/workspace/target/release/spiral.exe dib --path > CommonFSharp.dib --retries 3; cancellation_token = Some > System.Threading.CancellationToken; environment_variables = [||]; on_line = > None; stdin = None; trace = true; working_directory = None } } > │ 00:01:24 d #4 main / executeCommand / exitCode: 0 / > command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path > CommonFSharp.dib --retries 3 > │ 00:01:24 d #9 runtime.execute_with_options_async / { > file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = > US5_0 "dib --path FileSystem.dib --retries 3"; options = { command = > ../../deps/spiral/workspace/target/release/spiral.exe dib --path FileSystem.dib > --retries 3; cancellation_token = Some System.Threading.CancellationToken; > environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:02:08 d #10 runtime.execute_with_options_async / { > exit_code = 0; output_length = 46777; options = { command = > ../../deps/spiral/workspace/target/release/spiral.exe dib --path FileSystem.dib > --retries 3; cancellation_token = Some System.Threading.CancellationToken; > environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:02:08 d #5 main / executeCommand / exitCode: 0 / > command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path > FileSystem.dib --retries 3 > │ 00:02:08 d #11 runtime.execute_with_options_async / { > file_name = ../../deps/spiral/workspace/target/release/spiral.exe; arguments = > US5_0 "dib --path Runtime.dib --retries 3"; options = { command = > ../../deps/spiral/workspace/target/release/spiral.exe dib --path Runtime.dib > --retries 3; cancellation_token = Some System.Threading.CancellationToken; > environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:02:30 d #12 runtime.execute_with_options_async / { > exit_code = 0; output_length = 9236; options = { command = > ../../deps/spiral/workspace/target/release/spiral.exe dib --path Runtime.dib > --retries 3; cancellation_token = Some System.Threading.CancellationToken; > environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:02:30 d #6 main / executeCommand / exitCode: 0 / > command: ../../deps/spiral/workspace/target/release/spiral.exe dib --path > Runtime.dib --retries 3 > │ 00:00:00 d #1 writeDibCode / output: Fs / path: > Common.dib > │ 00:00:00 d #1 writeDibCode / output: Fs / path: > FileSystem.dib > │ 00:00:00 d #1 writeDibCode / output: Fs / path: > Runtime.dib > │ 00:00:00 d #1 writeDibCode / output: Fs / path: > AsyncSeq.dib > │ 00:00:00 d #1 writeDibCode / output: Fs / path: > CommonFSharp.dib > │ 00:00:00 d #1 writeDibCode / output: Fs / path: > Async.dib > │ 00:00:00 d #2 parseDibCode / output: Fs / file: > FileSystem.dib > │ 00:00:00 d #3 parseDibCode / output: Fs / file: > Common.dib > │ 00:00:00 d #4 parseDibCode / output: Fs / file: > Runtime.dib > │ 00:00:00 d #4 parseDibCode / output: Fs / file: > CommonFSharp.dib > │ 00:00:00 d #6 parseDibCode / output: Fs / file: > AsyncSeq.dib > │ 00:00:00 d #7 parseDibCode / output: Fs / file: > Async.dib > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../deps/spiral/apps/wasm/build.ps1 -SkipFsx 1 } | Invoke-Block > > ── [ 2.44m - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 persistCodeProject / packages: > [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; > deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: > spiral_wasm / hash: / code.Length: 248118 > │ spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: > C:\home\git\polyglot\target\Builder\spiral_wasm > │ polyglot/scripts/core.ps1/ResolveLink #4 / Path: > C:\home\git\polyglot\deps\spiral\deps\polyglot\deps\spiral\lib\spiral/../../deps > /polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: > C:\home\git\polyglot\deps\spiral\deps\polyglot\deps\spiral\lib\spiral\..\..\deps > / End: polyglot > │ spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: > C:\home\git\polyglot\target\Builder\spiral_wasm / ProjectName: spiral_wasm / > Language: rs / Runtime: / root: C:\home\git\polyglot > │ Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) > │ > │ Thanks to the contributor! @coolya > │ Stand with Ukraine! https://standwithukraine.com.ua/ > │ > │ Parsing target\Builder\spiral_wasm\spiral_wasm.fsproj... > │ Project and references (14 source files) parsed in 2685ms > │ > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInt > erop.dll for Fable plugins, skipping this assembly. Original error: The > exception has been reported. This internal exception should now be caught at an > error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The > exception has been reported. This internal exception should now be caught at an > error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. > Original error: The exception has been reported. This internal exception should > now be caught at an error recovery point on the stack. Original message: The > type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You > must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original > error: The exception has been reported. This internal exception should now be > caught at an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The > exception has been reported. This internal exception should now be caught at an > error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: > The exception has been reported. This internal exception should now be caught at > an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original > error: The exception has been reported. This internal exception should now be > caught at an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original > error: The exception has been reported. This internal exception should now be > caught at an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. > Original error: The exception has been reported. This internal exception should > now be caught at an error recovery point on the stack. Original message: The > type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You > must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Components.dll for Fable plugins, skipping this assembly. Original error: > The exception has been reported. This internal exception should now be caught at > an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ > │ Started Fable compilation... > │ > │ Fable compilation finished in 10875ms > │ > │ .\deps\spiral\lib\spiral\common.fsx(2199,0): (2199,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\sm.fsx(561,0): (561,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\crypto.fsx(2426,0): (2426,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\networking.fsx(5050,0): (5050,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\trace.fsx(2232,0): (2232,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\runtime.fsx(7321,0): (7321,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\file_system.fsx(19036,0): (19036,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ spiral/apps/wasm/build.ps1 / path: > C:\home\git\polyglot\target\Builder\spiral_wasm/target/rs/spiral_wasm.rs > │ spiral/apps/wasm/build.ps1 / $targetDir = > C:\home\git\polyglot\target\Builder\spiral_wasm / $projectName: spiral_wasm / > $env:CI:'' > │ warning: /mnt/c/home/git/spiral/apps/spiral/Cargo.toml: > the cargo feature `edition2024` has been stabilized in the 1.85 release and is > no longer necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: /mnt/c/home/git/spiral/workspace/Cargo.toml: > the cargo feature `edition2024` has been stabilized in the 1.85 release and is > no longer necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: /mnt/c/home/git/spiral/apps/wasm/Cargo.toml: > the cargo feature `edition2024` has been stabilized in the 1.85 release and is > no longer necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > /mnt/c/home/git/spiral/lib/spiral/near/wallet/Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ Compiling spiral_wasm v0.0.1 > (/mnt/c/home/git/spiral/apps/wasm) > │ Finished `release` profile [optimized] target(s) in > 2m 02s > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../lib/math/build.ps1 } | Invoke-Block > > ── [ 4.58m - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "math.dib", "--retries", "1"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/lib/math/math.dib", "--output-path", > "c:/home/git/polyglot/lib/math/math.dib.ipynb"]; options = { command = dotnet > repl --exit-after-run --run "c:/home/git/polyglot/lib/math/math.dib" > --output-path "c:/home/git/polyglot/lib/math/math.dib.ipynb"; cancellation_token > = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), > ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; > working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # math > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > open testing > │ > open rust.rust_operators > │ > open rust > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## complex > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > nominal complex t = > │ > `( > │ > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; > │ > > Fable.Core.Emit(\"num_complex::Complex<$0>\")>]]\n#endif\ntype > │ > num_complex_Complex<'T> = class end" > │ > $'' : $'num_complex_Complex<`t>' > │ > ) > │ > > │ > inl complex forall t. ((re : t), (im : t)) : complex t = > │ > !\\((re, im), $'"num_complex::Complex::new($0, $1)"') > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex > │ > > │ > complex (0f64, 0f64) > │ > |> sm'.format' > │ > |> sm'.from_std_string > │ > |> _assert_eq "0+0i" > │ > > │ > ── [ 22.44s - return value ] > ─────────────────────────────────────────────────── > │ > │ { name = __assert_eq; actual = 0+0i; > expected = 0+0i } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## re > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl re forall t. (c : complex t) : t = > │ > !\\(c, $'"$0.re"') > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## im > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl im forall t. (c : complex t) : t = > │ > !\\(c, $'"$0.im"') > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## complex_unbox > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl complex_unbox forall t. (c : complex t) = > │ > re c, im c > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## (~.^) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl (~.^) c = complex c > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## complex_eq > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl complex_eq forall t. (a : complex t) (b : complex t) : > bool = > │ > !\\((a, b), $'"$0 == $1"') > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## (.=) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl (.=) a b = complex_eq a b > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## equable complex > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > instance equable complex t = complex_eq > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## complex_add > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl complex_add forall t. (a : complex t) (b : complex t) : > complex t = > │ > !\\((a, b), $'"$0 + $1"') > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## (.+) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl (.+) a b = complex_add a b > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## complex_sub > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl complex_sub forall t. (a : complex t) (b : complex t) : > complex t = > │ > !\\((a, b), $'"$0 - $1"') > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## (.-) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl (.-) a b = complex_sub a b > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## complex_mult > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl complex_mult forall t. (a : complex t) (b : complex t) > : complex t = > │ > !\\((a, b), $'"$0 * $1"') > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## (.*) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl (.*) a b = complex_mult a b > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## complex_div > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl complex_div forall t. (a : complex t) (b : complex t) : > complex t = > │ > !\\((a, b), $'"$0 / $1"') > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## (./) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl (./) a b = complex_div a b > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## powc > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl powc forall t. (s : complex t) (c : complex t) : > complex t = > │ > !\\((c, s), $'"num_complex::Complex::powc($0, $1)"') > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## (.**) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl (.**) a b = powc b a > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## complex_sin > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl complex_sin forall t. (c : complex t) : complex t = > │ > !\\(c, $'"$0.sin()"') > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## conj > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl conj forall t. (c : complex t) : complex t = > │ > !\\(c, $'"$0.conj()"') > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## zeta > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl zeta log (gamma : complex f64 -> complex f64) (s : > complex f64) : complex > │ > f64 = > │ > inl rec zeta count gamma s = > │ > if log then > │ > !\\((count, s), $'"println\!(\\\"zeta / count: > {:?} / s: {:?}\\\", > │ > $0, $1)"') > │ > if re s > 1 then > │ > (.^(0, 0), (am.init 10000i32 id : a i32 _)) > │ > ||> am.fold fun acc n => > │ > acc .+ (.^(1, 0) ./ (.^(f64 n, 0) .** s)) > │ > else > │ > inl gamma_term = gamma (.^(1, 0) .- s) > │ > inl sin_term = .^(pi, 0) .* s ./ .^(2, 0) |> > complex_sin > │ > inl one_minus_s = .^(1 - re s, -(im s)) > │ > inl mirror_term = > │ > if re one_minus_s <= 1 > │ > then .^(0, 0) > │ > else > │ > if count <= 3 > │ > then zeta (count + 1) gamma one_minus_s > │ > else one_minus_s > │ > inl reflection_formula = > │ > .^(2, 0) .* (.^(pi, 0) .** s) .* sin_term > .* gamma_term .* > │ > mirror_term > │ > reflection_formula > │ > join zeta 0i32 gamma s > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## bound > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > nominal bound t = > │ > `( > │ > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; > │ > Fable.Core.Emit(\"pyo3::Bound<$0>\")>]]\n#endif\ntype > pyo3_Bound<'T> = class > │ > end" > │ > $'' : $'pyo3_Bound<`t>' > │ > ) > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## python > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > nominal python = > │ > `( > │ > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; > │ > Fable.Core.Emit(\"pyo3::Python\")>]]\n#endif\ntype > pyo3_Python = class end" > │ > $'' : $'pyo3_Python' > │ > ) > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## pymodule > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > nominal pymodule = > │ > `( > │ > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; > │ > Fable.Core.Emit(\"pyo3::types::PyModule\")>]]\n#endif\ntype > pyo3_types_PyModule > │ > = class end" > │ > $'' : $'pyo3_types_PyModule' > │ > ) > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## pyany > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > nominal pyany = > │ > `( > │ > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; > │ > Fable.Core.Emit(\"pyo3::PyAny\")>]]\n#endif\ntype > pyo3_PyAny = class end" > │ > $'' : $'pyo3_PyAny' > │ > ) > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## pyerr > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > nominal pyerr = > │ > `( > │ > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; > │ > Fable.Core.Emit(\"pyo3::PyErr\")>]]\n#endif\ntype > pyo3_PyErr = class end" > │ > $'' : $'pyo3_PyErr' > │ > ) > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## eval > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl module_from_code (py : python) (code : string) : _ > (bound pymodule) _ = > │ > inl py = join py > │ > inl code = code |> sm'.to_std_string |> > sm'.new_c_string > │ > inl empty = "" |> sm'.to_std_string |> sm'.new_c_string > │ > !\\(code, $'"pyo3::types::PyModule::from_code(!py, &$0, > &!empty, &!empty)"') > │ > |> resultm.map_error'' fun (x : pyerr) => x |> > sm'.format' > │ > > │ > inl use_pyanymethods () = > │ > global "Fable.Core.RustInterop.emitRustExpr () > \");\nuse > │ > pyo3::prelude::PyAnyMethods;\n//\"" > │ > > │ > inl getattr (attr : string) (module : bound pymodule) : _ > (bound pyany) _ = > │ > inl attr = join attr > │ > inl attr = attr |> sm'.as_str > │ > inl module = join module > │ > use_pyanymethods () > │ > !\\(attr, $'"!module.getattr($0)"') > │ > |> resultm.map_error'' fun (x : pyerr) => x |> > sm'.format' > │ > > │ > inl call forall t. (args : t) (module : bound pyany) : _ > (bound pyany) _ = > │ > inl args = join args > │ > inl module = join module > │ > !\($'"pyo3::prelude::PyAnyMethods::call(&!module, > ((*!args).0, *(*!args).1), > │ > None)"') > │ > |> resultm.map_error'' fun (x : pyerr) => x |> > sm'.format' > │ > > │ > inl extract forall t. (result : bound pyany) : _ t _ = > │ > inl result = join result > │ > use_pyanymethods () > │ > !\($'"!result.extract()"') > │ > |> resultm.map_error'' fun (x : pyerr) => x |> > sm'.format' > │ > > │ > inl eval py code (args : pair bool (pair f64 f64)) : _ (_ > f64) sm'.std_string = > │ > inl code = > │ > code > │ > |> module_from_code py > │ > |> resultm.unwrap' > │ > inl fn = > │ > code > │ > |> getattr "fn" > │ > |> resultm.unwrap' > │ > > │ > fn > │ > |> call args > │ > |> resultm.try' > │ > |> extract > │ > |> resultm.try' > │ > |> complex > │ > |> Ok > │ > |> resultm.box > │ > > │ > inl call1_ log py s code = > │ > inl code = join (a code : _ i32 _) |> sm'.concat_array > "\n" > │ > > │ > inl s = new_pair (re s) (im s) > │ > inl args = new_pair log s > │ > > │ > eval py code args > │ > > │ > inl call1_ log name py s line = > │ > inl s = join s > │ > join > │ > ;[[ > │ > $'$"import sys"' > │ > $'$"import traceback"' > │ > $'$"import re"' > │ > $'$"count = 0"' > │ > $'$"memory_address_pattern = re.compile(r\' at > 0x[[0-9a-fA-F]]+\')"' > │ > $'$"def trace_calls(frame, event, arg):"' > │ > $'$" global count"' > │ > $'$" count += 1"' > │ > $'$" if count < 200:"' > │ > $'$" try:"' > │ > $'$" args = {{ k: v for k, v in > frame.f_locals.items() if > │ > frame.f_code.co_name \!= \'make_mpc\' and k not in > [[\'ctx\']] and not > │ > callable(v) }}"' > │ > $'$" args_str = \', \'.join([[ > │ > f\\\"{{k}}={{re.sub(memory_address_pattern, \' at 0x<?>\', > repr(v))}}\\\" for k, > │ > v in args.items() ]])"' > │ > $'$" print(f\\\"{{event}}({!name}) / > f_code.co_name: > │ > {{frame.f_code.co_name}} / f_locals: {{args_str}} / > f_lineno: {{frame.f_lineno}} > │ > / f_code.co_filename: > │ > {{frame.f_code.co_filename.split(\'site-packages\')[[-1]]}} > / f_back.f_lineno: > │ > {{ \'\' if frame.f_back is None else frame.f_back.f_lineno > }} / > │ > f_back.f_code.co_filename: {{ \'\' if frame.f_back is None > else > │ > > frame.f_back.f_code.co_filename.split(\'site-packages\')[[-1]] }} / arg: > │ > {{re.sub(memory_address_pattern, \' at 0x<?>\', > repr(arg))}}\\\", flush=True)"' > │ > $'$" except ValueError as e:"' > │ > $'$" print(f\'{!name} / e: {{e}}\', > flush=True)"' > │ > $'$" return trace_calls"' > │ > $'$"import mpmath"' > │ > $'$"def fn(log, s):"' > │ > $'$" global count"' > │ > $'$" if log:"' > │ > $'$" print(f\'{!name} / s: {{s}} / > count: {{count}}\', > │ > flush=True)"' > │ > $'$" s = complex(*s)"' > │ > $'$" try:"' > │ > $'$" if log: sys.settrace(trace_calls)"' > │ > line > │ > $'$" if log:"' > │ > $'$" sys.settrace(None)"' > │ > $'$" print(f\'{!name} / result: > {{s}} / count: > │ > {{count}}\', flush=True)"' > │ > $'$" except ValueError as e:"' > │ > $'$" if s.real == 1:"' > │ > $'$" s = complex(float(\'inf\'), > 0)"' > │ > $'$" return (s.real, s.imag)"' > │ > ]] > │ > |> call1_ log py s > │ > > │ > inl gamma_ log py s = > │ > call1_ log "gamma_" py s $'$" s = > mpmath.gamma(s)"' > │ > > │ > inl zeta_ log py s = > │ > call1_ log "zeta_" py s $'$" s = > mpmath.zeta(s)"' > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## run_test > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl run_test log (fn : (complex f64 -> complex f64) * > (complex f64 -> complex > │ > f64) -> ()) = > │ > inl fn_ (py : python) : resultm.result' () pyerr = > │ > inl nan () = > │ > !\($'"f64::NAN"') > │ > inl gamma__ = fun (s : complex f64) => > │ > inl result = gamma_ log py s > │ > if log then > │ > inl s = join s > │ > !\($'"println\!(\\\"gamma__ / s: {:?} / > result: {:?}\\\", !s, > │ > !result)"') > │ > result |> resultm.ok' |> optionm'.unbox |> > optionm'.default_value > │ > .^(nan (), nan ()) > │ > inl zeta__ = fun (s : complex f64) => > │ > inl result = zeta_ log py s > │ > > │ > inl z = zeta true gamma__ s > │ > > │ > if log then > │ > inl s = join s > │ > !\($'"println\!(\\\"zeta__ / s: {:?} / > result: {:?} / z: > │ > {:?}\\\", !s, !result, !z)"') > │ > > │ > // re result - re x |> abs > │ > // |> _assert_lt 0.001 > │ > > │ > // im result - im x |> abs > │ > // |> _assert_lt 0.001 > │ > > │ > result |> resultm.ok' |> optionm'.unbox |> > optionm'.default_value > │ > .^(nan (), nan ()) > │ > join fn (zeta__, gamma__) > │ > > │ > Ok () > │ > |> resultm.box > │ > > │ > join > │ > !\($'"pyo3::prepare_freethreaded_python()"') : () > │ > > │ > !\($'"let __run_test = pyo3::Python::with_gil(|py| > -> pyo3::PyResult<()> > │ > { //"') > │ > > │ > let x' = fn_ (!\($'"py"') : python) > │ > inl x' = join x' > │ > > │ > inl closure_fix = 2u8, 1u8 > │ > x' |> rust.fix_closure closure_fix > │ > > │ > (!\($'"__run_test"') : _ () pyerr) > │ > |> resultm.unwrap' > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## test_zeta_at_known_values_ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl test_zeta_at_known_values_ log = run_test log fun zeta, > gamma => > │ > ;[[ > │ > .^(2, 0), pi ** 2 / 6 > │ > .^(-1, 0), -1 / 12 > │ > ]] > │ > |> fun x => a x : _ i32 _ > │ > |> am.iter fun s, e => > │ > inl result = zeta s > │ > > │ > result |> im |> _assert_eq 0 > │ > re result - e |> abs |> _assert_lt 0.0001 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex pyo3 > │ > > │ > test_zeta_at_known_values_ true > │ > > │ > ── [ 31.52s - return value ] > ─────────────────────────────────────────────────── > │ > │ zeta_ / s: (2.0, 0.0) / count: 0 > │ > │ call(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 528 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 530 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ call(zeta_) / f_code.co_name: f / > f_locals: x=(2+0j), > │ > kwargs={}, name='zeta' / f_lineno: 989 / > f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / > f_back.f_code.co_filename: > │ > \mpmath\functions\zeta.py / arg: None > │ > │ line(zeta_) / f_code.co_name: f / > f_locals: x=(2+0j), > │ > kwargs={}, name='zeta' / f_linen... f_code.co_filename: > \mpmath\ctx_mp_python.py > │ > / f_back.f_lineno: 1007 / f_back.f_code.co_filename: > \mpmath\ctx_mp_python.py / > │ > arg: None > │ > │ line(gamma_) / f_code.co_name: make_mpc > / f_locals: / > │ > f_lineno: 604 / f_code.co_filename: > \mpmath\ctx_mp_python.py / f_back.f_lineno: > │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py > / arg: None > │ > │ line(gamma_) / f_code.co_name: make_mpc > / f_locals: / > │ > f_lineno: 605 / f_code.co_filename: > \mpmath\ctx_mp_python.py / f_back.f_lineno: > │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py > / arg: None > │ > │ return(gamma_) / f_code.co_name: > make_mpc / f_locals: / > │ > f_lineno: 605 / f_code.co_filename: > \mpmath\ctx_mp_python.py / f_back.f_lineno: > │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py > / arg: > │ > mpc(real='1.0', imag='0.0') > │ > │ return(gamma_) / f_code.co_name: f / > f_locals: > │ > x=mpc(real='2.0', imag='0.0'), kwargs={}, name='gamma', > prec=53, rounding='n' / > │ > f_lineno: 1007 / f_code.co_filename: > \mpmath\ctx_mp_python.py / f_back.f_lineno: > │ > 25 / f_back.f_code.co_filename: / arg: mpc(real='1.0', > imag='0.0') > │ > │ gamma_ / result: (1.0 + 0.0j) / count: > 140 > │ > │ gamma__ / s: Complex { re: 2.0, im: 0.0 > } / result: > │ > Ok(Complex { re: 1.0, im: 0.0 }) > │ > │ zeta / count: 1 / s: Complex { re: 2.0, > im: -0.0 } > │ > │ zeta__ / s: Complex { re: -1.0, im: 0.0 > } / result: > │ > Ok(Complex { re: -0.08333333333333333, im: 0.0 }) / z: > Complex { re: NaN, im: > │ > NaN } > │ > │ { name = __assert_eq; actual = > +0.000000; expected = > │ > +0.000000 } > │ > │ { name = __assert_lt; actual = > +0.000000; expected = > │ > +0.000100 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## test_zeta_at_2_minus2 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl test_zeta_at_2_minus2 log = run_test log fun zeta, > gamma => > │ > inl s = .^(2, -2) > │ > inl result = zeta s > │ > > │ > (re result - 0.8673) |> abs |> _assert_lt 0.001 > │ > (im result - 0.2750) |> abs |> _assert_lt 0.001 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex pyo3 > │ > > │ > test_zeta_at_2_minus2 true > │ > > │ > ── [ 10.68s - return value ] > ─────────────────────────────────────────────────── > │ > │ zeta_ / s: (2.0, -2.0) / count: 0 > │ > │ call(zeta_) / f_code.co_name: zeta / > f_locals: s=(2-2j), a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 528 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2-2j), a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 530 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2-2j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2-2j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2-2j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ call(zeta_) / f_code.co_name: f / > f_locals: x=(2-2j), > │ > kwargs={}, name='zeta' / f_lineno: 989 / > f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / > f_back.f_code.co_filename: > │ > \mpmath\functions\zeta.py / arg: None > │ > │ line(zeta_) / f_code.co_name: f / > f_locals: x=(2-2j), > │ > kwargs={}, name='zeta' / f_line... None > │ > │ call(zeta_) / f_code.co_name: > python_bitcount / f_locals: n=2 > │ > / f_lineno: 91 / f_code.co_filename: > \mpmath\libmp\libintmath.py / > │ > f_back.f_lineno: 778 / f_back.f_code.co_filename: > \mpmath\libmp\libmpf.py / arg: > │ > None > │ > │ line(zeta_) / f_code.co_name: > python_bitcount / f_locals: n=2 > │ > / f_lineno: 93 / f_code.co_filename: > \mpmath\libmp\libintmath.py / > │ > f_back.f_lineno: 778 / f_back.f_code.co_filename: > \mpmath\libmp\libmpf.py / arg: > │ > None > │ > │ line(zeta_) / f_code.co_name: > python_bitcount / f_locals: > │ > n=2, bc=2 / f_lineno: 94 / f_code.co_filename: > \mpmath\libmp\libintmath.py / > │ > f_back.f_lineno: 778 / f_back.f_code.co_filename: > \mpmath\libmp\libmpf.py / arg: > │ > None > │ > │ line(zeta_) / f_code.co_name: > python_bitcount / f_locals: > │ > n=2, bc=2 / f_lineno: 95 / f_code.co_filename: > \mpmath\libmp\libintmath.py / > │ > f_back.f_lineno: 778 / f_back.f_code.co_filename: > \mpmath\libmp\libmpf.py / arg: > │ > None > │ > │ return(zeta_) / f_code.co_name: > python_bitcount / f_locals: > │ > n=2, bc=2 / f_lineno: 95 / f_code.co_filename: > \mpmath\libmp\libintmath.py / > │ > f_back.f_lineno: 778 / f_back.f_code.co_filename: > \mpmath\libmp\libmpf.py / arg: > │ > 2 > │ > │ zeta_ / result: (0.867351829635993 + > 0.275127238807858j) / > │ > count: 1812 > │ > │ zeta / count: 0 / s: Complex { re: 2.0, > im: -2.0 } > │ > │ zeta__ / s: Complex { re: 2.0, im: -2.0 > } / result: > │ > Ok(Complex { re: 0.8673518296359931, im: > 0.27512723880785767 }) / z: Complex { > │ > re: NaN, im: NaN } > │ > │ { name = __assert_lt; actual = > +0.000052; expected = > │ > +0.001000 } > │ > │ { name = __assert_lt; actual = > +0.000127; expected = > │ > +0.001000 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## > test_trivial_zero_at_negative_even___ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl test_trivial_zero_at_negative_even___ log = run_test > log fun zeta, gamma => > │ > (join listm'.init_series -2f64 -40 -2) > │ > |> listm.iter fun n => > │ > inl s = .^(n, 0) > │ > inl result = zeta s > │ > > │ > result |> re |> _assert_eq 0 > │ > result |> im |> _assert_eq 0 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex pyo3 > │ > > │ > test_trivial_zero_at_negative_even___ true > │ > > │ > ── [ 10.38s - return value ] > ─────────────────────────────────────────────────── > │ > │ zeta_ / s: (-2.0, 0.0) / count: 0 > │ > │ call(zeta_) / f_code.co_name: zeta / > f_locals: s=(-2+0j), > │ > a=1, derivative=0, method=None, kwargs={} / f_lineno: 528 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(-2+0j), > │ > a=1, derivative=0, method=None, kwargs={} / f_lineno: 530 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(-2+0j), > │ > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: > 531 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(-2+0j), > │ > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: > 532 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(-2+0j), > │ > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: > 533 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ call(zeta_) / f_code.co_name: f / > f_locals: x=(-2+0j), > │ > kwargs={}, name='zeta' / f_lineno: 989 / > f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / > f_back.f_code.co_filename: > │ > \mpmath\functions\zeta.py / arg: None > │ > │ line(zeta_) / f_code.co_name: f / > f_locals: x=(-2+0j), > │ > kwargs={}, name='zeta' /...neno: 1007 / > f_back.f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / arg: None > │ > │ line(gamma_) / f_code.co_name: make_mpc > / f_locals: / > │ > f_lineno: 604 / f_code.co_filename: > \mpmath\ctx_mp_python.py / f_back.f_lineno: > │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py > / arg: None > │ > │ line(gamma_) / f_code.co_name: make_mpc > / f_locals: / > │ > f_lineno: 605 / f_code.co_filename: > \mpmath\ctx_mp_python.py / f_back.f_lineno: > │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py > / arg: None > │ > │ return(gamma_) / f_code.co_name: > make_mpc / f_locals: / > │ > f_lineno: 605 / f_code.co_filename: > \mpmath\ctx_mp_python.py / f_back.f_lineno: > │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py > / arg: > │ > mpc(real='8.1591528324789768e+47', imag='0.0') > │ > │ return(gamma_) / f_code.co_name: f / > f_locals: > │ > x=mpc(real='41.0', imag='0.0'), kwargs={}, name='gamma', > prec=53, rounding='n' / > │ > f_lineno: 1007 / f_code.co_filename: > \mpmath\ctx_mp_python.py / f_back.f_lineno: > │ > 25 / f_back.f_code.co_filename: / arg: > mpc(real='8.1591528324789768e+47', > │ > imag='0.0') > │ > │ gamma_ / result: (8.15915283247898e+47 + > 0.0j) / count: 149 > │ > │ gamma__ / s: Complex { re: 41.0, im: 0.0 > } / result: > │ > Ok(Complex { re: 8.159152832478977e47, im: 0.0 }) > │ > │ zeta / count: 1 / s: Complex { re: 41.0, > im: -0.0 } > │ > │ zeta__ / s: Complex { re: -40.0, im: 0.0 > } / result: > │ > Ok(Complex { re: 0.0, im: 0.0 }) / z: Complex { re: NaN, > im: NaN } > │ > │ { name = __assert_eq; actual = > +0.000000; expected = > │ > +0.000000 } > │ > │ { name = __assert_eq; actual = > +0.000000; expected = > │ > +0.000000 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## test_non_trivial_zero___ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl test_non_trivial_zero___ log = run_test log fun zeta, > gamma => > │ > ;[[ > │ > .^(0.5, 14.134725) > │ > .^(0.5, 21.022040) > │ > .^(0.5, 25.010857) > │ > .^(0.5, 30.424876) > │ > .^(0.5, 32.935062) > │ > .^(0.5, 37.586178) > │ > ]] > │ > |> fun x => a x : _ i32 _ > │ > |> am.iter fun x => > │ > inl result = zeta x > │ > result |> re |> abs |> _assert_lt 0.0001 > │ > result |> im |> abs |> _assert_lt 0.0001 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex pyo3 > │ > > │ > test_non_trivial_zero___ true > │ > > │ > ── [ 10.38s - return value ] > ─────────────────────────────────────────────────── > │ > │ zeta_ / s: (0.5, 14.134725) / count: 0 > │ > │ call(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, > kwargs={} / f_lineno: 528 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, > kwargs={} / f_lineno: 530 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, > kwargs={}, d=0 / f_lineno: > │ > 531 / f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, > kwargs={}, d=0 / f_lineno: > │ > 532 / f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, > kwargs={}, d=0 / f_lineno: > │ > 533 / f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ call(zeta_) / f_code.co_name: f / > f_locals: > │ > x=(0.5+14.134725j), kwargs={}, name='zeta' / f_lineno: 989 > / f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / > f_back.f_code.co_filename: > │ > \mpmath\functions\zeta.py / arg: None > │ > │ line(zeta_) / f_code...None > │ > │ line(gamma_) / f_code.co_name: > complex_stirling_series / > │ > f_locals: x=1208925819614629174706176, > y=-90877802089662679288381440, prec=81, > │ > _m=3416353708500640443578529333, tre=855591523614410863719,│ > tim=64316830603724894628746, ure=-1710577520534459139249, > │ > uim=45518868236127668552, sre=1013002518538853602038572, > │ > sim=90883161825546323029600502 / f_lineno: 1637 / > f_code.co_filename: > │ > \mpmath\libmp\gammazeta.py / f_back.f_lineno: 2050 / > f_back.f_code.co_filename: > │ > \mpmath\libmp\gammazeta.py / arg: None > │ > │ line(gamma_) / f_code.co_name: > complex_stirling_series / > │ > f_locals: x=1208925819614629174706176, > y=-90877802089662679288381440, prec=81, > │ > _m=3416353708500640443578529333, tre=-1816151534455075068, > │ > tim=-45486653225747820096, ure=-1710577520534459139249, > │ > uim=45518868236127668552, sre=1013002518538853602038572, > │ > sim=90883161825546323029600502 / f_lineno: 1638 / > f_code.co_filename: > │ > \mpmath\libmp\gammazeta.py / f_back.f_lineno: 2050 / > f_back.f_code.co_filename: > │ > \mpmath\libmp\gammazeta.py / arg: None > │ > │ gamma_ / result: (-1.32798420042152e-26 > + > │ > 5.5751975252688e-26j) / count: 309 > │ > │ gamma__ / s: Complex { re: 0.5, im: > -37.586178 } / result: > │ > Ok(Complex { re: -1.3279842004215153e-26, im: > 5.575197525268802e-26 }) > │ > │ zeta__ / s: Complex { re: 0.5, im: > 37.586178 } / result: > │ > Ok(Complex { re: -8.910186507947958e-8, im: > -2.943780446402868e-7 }) / z: > │ > Complex { re: -0.0, im: 0.0 } > │ > │ { name = __assert_lt; actual = > +0.000000; expected = > │ > +0.000100 } > │ > │ { name = __assert_lt; actual = > +0.000000; expected = > │ > +0.000100 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## test_real_part_greater_than_one___ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl test_real_part_greater_than_one___ log = run_test log > fun zeta, gamma => > │ > inl points = ;[[ 2; 3; 4; 5; 10; 20; 50 ]] > │ > (a points : _ i32 _) > │ > |> am.iter fun point => > │ > inl s = .^(point, 0) > │ > inl result = zeta s > │ > result |> re |> _assert_gt 0 > │ > result |> im |> _assert_eq 0 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex pyo3 > │ > > │ > test_real_part_greater_than_one___ true > │ > > │ > ── [ 10.00s - return value ] > ─────────────────────────────────────────────────── > │ > │ zeta_ / s: (2.0, 0.0) / count: 0 > │ > │ call(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 528 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 530 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ call(zeta_) / f_code.co_name: f / > f_locals: x=(2+0j), > │ > kwargs={}, name='zeta' / f_lineno: 989 / > f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / > f_back.f_code.co_filename: > │ > \mpmath\functions\zeta.py / arg: None > │ > │ line(zeta_) / f_code.co_name: f / > f_locals: x=(2+0j), > │ > kwargs={}, name='zeta' / f_linen..._mp_python.py / > f_back.f_lineno: 1007 / > │ > f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: > None > │ > │ line(zeta_) / f_code.co_name: make_mpc / > f_locals: / > │ > f_lineno: 605 / f_code.co_filename: > \mpmath\ctx_mp_python.py / f_back.f_lineno: > │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py > / arg: None > │ > │ return(zeta_) / f_code.co_name: make_mpc > / f_locals: / > │ > f_lineno: 605 / f_code.co_filename: > \mpmath\ctx_mp_python.py / f_back.f_lineno: > │ > 1007 / f_back.f_code.co_filename: \mpmath\ctx_mp_python.py > / arg: > │ > mpc(real='1.0000000000000009', imag='0.0') > │ > │ return(zeta_) / f_code.co_name: f / > f_locals: > │ > x=mpc(real='50.0', imag='0.0'), kwargs={}, name='zeta', > prec=53, rounding='n' / > │ > f_lineno: 1007 / f_code.co_filename: > \mpmath\ctx_mp_python.py / f_back.f_lineno: > │ > 533 / f_back.f_code.co_filename: \mpmath\functions\zeta.py > / arg: > │ > mpc(real='1.0000000000000009', imag='0.0') > │ > │ return(zeta_) / f_code.co_name: zeta / > f_locals: s=(50+0j), > │ > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: > 533 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: > mpc(real='1.0000000000000009', imag='0.0') > │ > │ zeta_ / result: (1.0 + 0.0j) / count: > 181 > │ > │ zeta / count: 0 / s: Complex { re: 50.0, > im: 0.0 } > │ > │ zeta__ / s: Complex { re: 50.0, im: 0.0 > } / result: > │ > Ok(Complex { re: 1.0000000000000009, im: 0.0 }) / z: > Complex { re: NaN, im: NaN > │ > } > │ > │ { name = __assert_gt; actual = > +1.000000; expected = > │ > +0.000000 } > │ > │ { name = __assert_eq; actual = > +0.000000; expected = > │ > +0.000000 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## test_zeta_at_1___ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl test_zeta_at_1___ log = run_test log fun zeta, gamma => > │ > inl s = .^(1, 0) > │ > inl result = zeta s > │ > result |> re |> _assert_eq limit.max > │ > result |> im |> _assert_eq 0 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex pyo3 > │ > > │ > test_zeta_at_1___ true > │ > > │ > ── [ 9.86s - return value ] > ──────────────────────────────────────────────────── > │ > │ zeta_ / s: (1.0, 0.0) / count: 0 > │ > │ call(zeta_) / f_code.co_name: zeta / > f_locals: s=(1+0j), a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 528 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(1+0j), a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 530 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(1+0j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(1+0j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(1+0j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ call(zeta_) / f_code.co_name: f / > f_locals: x=(1+0j), > │ > kwargs={}, name='zeta' / f_lineno: 989 / > f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / > f_back.f_code.co_filename: > │ > \mpmath\functions\zeta.py / arg: None > │ > │ line(zeta_) / f_code.co_name: f / > f_locals: x=(1+0j), > │ > kwargs={}, name='zeta' / f_linen...) / f_code.co_name: f / > f_locals: > │ > x=mpc(real='0.0', imag='0.0'), kwargs={}, name='gamma', > prec=53, rounding='n' / > │ > f_lineno: 1007 / f_code.co_filename: > \mpmath\ctx_mp_python.py / f_back.f_lineno: > │ > 25 / f_back.f_code.co_filename: / arg: None > │ > │ exception(gamma_) / f_code.co_name: fn / > f_locals: log=True, > │ > s=0j / f_lineno: 25 / f_code.co_filename: / > f_back.f_lineno: / > │ > f_back.f_code.co_filename: / arg: (<class 'ValueError'>, > ValueError('gamma > │ > function pole'), <traceback object at 0x<?>>) > │ > │ line(gamma_) / f_code.co_name: fn / > f_locals: log=True, s=0j > │ > / f_lineno: 29 / f_code.co_filename: / f_back.f_lineno: /│ > f_back.f_code.co_filename: / arg: None > │ > │ line(gamma_) / f_code.co_name: fn / > f_locals: log=True, s=0j, > │ > e=ValueError('gamma function pole') / f_lineno: 30 / > f_code.co_filename: / > │ > f_back.f_lineno: / f_back.f_code.co_filename: / arg: None > │ > │ line(gamma_) / f_code.co_name: fn / > f_locals: log=True, s=0j > │ > / f_lineno: 32 / f_code.co_filename: / f_back.f_lineno: /│ > f_back.f_code.co_filename: / arg: None > │ > │ return(gamma_) / f_code.co_name: fn / > f_locals: log=True, > │ > s=0j / f_lineno: 32 / f_code.co_filename: / > f_back.f_lineno: / > │ > f_back.f_code.co_filename: / arg: (0.0, 0.0) > │ > │ gamma__ / s: Complex { re: 0.0, im: 0.0 > } / result: > │ > Ok(Complex { re: 0.0, im: 0.0 }) > │ > │ zeta__ / s: Complex { re: 1.0, im: 0.0 } > / result: Ok(Complex > │ > { re: inf, im: 0.0 }) / z: Complex { re: 0.0, im: 0.0 } > │ > │ { name = __assert_eq; actual = +inf; > expected = +inf } > │ > │ { name = __assert_eq; actual = > +0.000000; expected = > │ > +0.000000 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## test_symmetry_across_real_axis___ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl test_symmetry_across_real_axis___ log = run_test log > fun zeta, gamma => > │ > inl s = .^(2, 10) > │ > inl result_positive_im = zeta s > │ > inl result_negative_im = zeta .^(re s, -(im s)) > │ > inl conj = result_negative_im |> conj > │ > result_positive_im |> re |> _assert_eq (conj |> re) > │ > result_positive_im |> im |> _assert_eq (conj |> im) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex pyo3 > │ > > │ > test_symmetry_across_real_axis___ true > │ > > │ > ── [ 9.89s - return value ] > ──────────────────────────────────────────────────── > │ > │ zeta_ / s: (2.0, 10.0) / count: 0 > │ > │ call(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+10j), > │ > a=1, derivative=0, method=None, kwargs={} / f_lineno: 528 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+10j), > │ > a=1, derivative=0, method=None, kwargs={} / f_lineno: 530 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+10j), > │ > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: > 531 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+10j), > │ > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: > 532 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+10j), > │ > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: > 533 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ call(zeta_) / f_code.co_name: f / > f_locals: x=(2+10j), > │ > kwargs={}, name='zeta' / f_lineno: 989 / > f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / > f_back.f_code.co_filename: > │ > \mpmath\functions\zeta.py / arg: None > │ > │ line(zeta_) / f_code.co_name: f / > f_locals: x=(2+10j), > │ > kwargs={}, name='zeta' /...ack.f_lineno: 778 / > f_back.f_code.co_filename: > │ > \mpmath\libmp\libmpf.py / arg: None > │ > │ line(zeta_) / f_code.co_name: > python_bitcount / f_locals: > │ > n=26, bc=5 / f_lineno: 94 / f_code.co_filename: > \mpmath\libmp\libintmath.py / > │ > f_back.f_lineno: 778 / f_back.f_code.co_filename: > \mpmath\libmp\libmpf.py / arg: > │ > None > │ > │ line(zeta_) / f_code.co_name: > python_bitcount / f_locals: > │ > n=26, bc=5 / f_lineno: 95 / f_code.co_filename: > \mpmath\libmp\libintmath.py / > │ > f_back.f_lineno: 778 / f_back.f_code.co_filename: > \mpmath\libmp\libmpf.py / arg: > │ > None > │ > │ return(zeta_) / f_code.co_name: > python_bitcount / f_locals: > │ > n=26, bc=5 / f_lineno: 95 / f_code.co_filename: > \mpmath\libmp\libintmath.py / > │ > f_back.f_lineno: 778 / f_back.f_code.co_filename: > \mpmath\libmp\libmpf.py / arg: > │ > 5 > │ > │ line(zeta_) / f_code.co_name: mpf_add / > f_locals: s=(0, 1, 2, > │ > 1), t=(0, 25, 2, 5), prec=14, rnd='d', _sub=0, ssign=0, > sman=1, sexp=2, sbc=1, > │ > tsign=0, tman=25, texp=2, tbc=5, offset=0, man=26, bc=5 / > f_lineno: 779 / > │ > f_code.co_filename: \mpmath\libmp\libmpf.py / > f_back.f_lineno: 1401 / > │ > f_back.f_code.co_filename: \mpmath\libmp\libmpf.py / arg: > None > │ > │ zeta_ / result: (1.19798250067418 + > 0.0791704917205257j) / > │ > count: 1174 > │ > │ zeta / count: 0 / s: Complex { re: 2.0, > im: -10.0 } > │ > │ zeta__ / s: Complex { re: 2.0, im: -10.0 > } / result: > │ > Ok(Complex { re: 1.1979825006741847, im: > 0.07917049172052575 }) / z: Complex { > │ > re: NaN, im: NaN } > │ > │ { name = __assert_eq; actual = > +1.197983; expected = > │ > +1.197983 } > │ > │ { name = __assert_eq; actual = > -0.079170; expected = > │ > -0.079170 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## test_behavior_near_origin___ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl test_behavior_near_origin___ log = run_test log fun > zeta, gamma => > │ > inl s = .^(0.01, 0.01) > │ > inl result = zeta s > │ > result |> re |> _assert_lt limit.max > │ > result |> im |> _assert_lt limit.max > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex pyo3 > │ > > │ > test_behavior_near_origin___ true > │ > > │ > ── [ 9.80s - return value ] > ──────────────────────────────────────────────────── > │ > │ zeta_ / s: (0.01, 0.01) / count: 0 > │ > │ call(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={} / > f_lineno: 528 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={} / > f_lineno: 530 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={}, > d=0 / f_lineno: 531 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={}, > d=0 / f_lineno: 532 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={}, > d=0 / f_lineno: 533 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ call(zeta_) / f_code.co_name: f / > f_locals: x=(0.01+0.01j), > │ > kwargs={}, name='zeta' / f_lineno: 989 / > f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / > f_back.f_code.co_filename: > │ > \mpmath\functions\zeta.py / arg: None > │ > │ line(zeta_) / f_code.co_name: f / > f_locals: x=(0.../ > │ > f_back.f_lineno: 1007 / f_back.f_code.co_filename: > \mpmath\ctx_mp_python.py / > │ > arg: None > │ > │ line(gamma_) / f_code.co_name: mpc_gamma > / f_locals: z=((0, > │ > 4458563631096791, -52, 52), (1, 5764607523034235, -59, > 53)), prec=53, rnd='n', > │ > type=0, a=(0, 4458563631096791, -52, 52), b=(1, > 5764607523034235, -59, 53), > │ > asign=0, aman=4458563631096791, aexp=-52, abc=52, bsign=1, > │ > bman=5764607523034235, bexp=-59, bbc=53, wp=73, amag=0, > bmag=-6, mag=0, an=0, > │ > bn=0, absn=0j, gamma_size=0, need_reflection=0, zorig=((0, > 4458563631096791, > │ > -52, 52), (1, 5764607523034235, -59, 53)), yfinal=0, > balance_prec=0, > │ > n_for_stirling=14, need_reduction=True, > afix=132131814190692672995328, > │ > bfix=-94447329657392906240, r=0, zprered=((0, > 4458563631096791, -52, 52), (1, > │ > 5764607523034235, -59, 53)), d=14, > rre=56942610883563778729574216337150, > │ > one=9444732965739290427392, > rim=-1820461636508155576115177658065, k=12 / > │ > f_lineno: 2043 / f_code.co_filename: > \mpmath\libmp\gammazeta.py / > │ > f_back.f_lineno: 1007 / f_back.f_code.co_filename: > \mpmath\ctx_mp_python.py / > │ > arg: None > │ > │ gamma_ / result: (1.00577030202902 + > 0.0059717824054102j) / > │ > count: 383 > │ > │ gamma__ / s: Complex { re: 0.99, im: > -0.01 } / result: > │ > Ok(Complex { re: 1.005770302029023, im: > 0.005971782405410201 }) > │ > │ zeta__ / s: Complex { re: 0.01, im: 0.01 > } / result: > │ > Ok(Complex { re: -0.5091873433665667, im: > -0.00939202213994577 }) / z: Complex { > │ > re: 0.0, im: 0.0 } > │ > │ { name = __assert_lt; actual = > -0.509187; expected = +inf } > │ > │ { name = __assert_lt; actual = > -0.009392; expected = +inf } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## test_imaginary_axis > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl test_imaginary_axis log = run_test log fun zeta, gamma > => > │ > (join [[ 10; 20; 30; 40; 50; 60; 70; 80; 90; 100 ]]) > │ > |> listm.iter fun s => > │ > inl s = .^(0, s) > │ > inl result = zeta s > │ > result |> re |> _assert_ne 0 > │ > result |> im |> _assert_ne 0 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex pyo3 > │ > > │ > test_imaginary_axis true > │ > > │ > ── [ 10.22s - return value ] > ─────────────────────────────────────────────────── > │ > │ zeta_ / s: (0.0, 10.0) / count: 0 > │ > │ call(zeta_) / f_code.co_name: zeta / > f_locals: s=10j, a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 528 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=10j, a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 530 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=10j, a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=10j, a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=10j, a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ call(zeta_) / f_code.co_name: f / > f_locals: x=10j, kwargs={}, > │ > name='zeta' / f_lineno: 989 / f_code.co_filename: > \mpmath\ctx_mp_python.py / > │ > f_back.f_lineno: 533 / f_back.f_code.co_filename: > \mpmath\functions\zeta.py / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: f / > f_locals: x=10j, kwargs={}, > │ > name='zeta' / f_lineno: 990 / f_code.co_f...a_) / > f_code.co_name: to_fixed / > │ > f_locals: s=(0, 1, 0, 1), prec=83 / f_lineno: 511 / > f_code.co_filename: > │ > \mpmath\libmp\libmpf.py / f_back.f_lineno: 2031 / > f_back.f_code.co_filename: > │ > \mpmath\libmp\gammazeta.py / arg: None > │ > │ line(gamma_) / f_code.co_name: to_fixed > / f_locals: s=(0, 1, > │ > 0, 1), prec=83, sign=0, man=1, exp=0, bc=1 / f_lineno: 512 > / f_code.co_filename: > │ > \mpmath\libmp\libmpf.py / f_back.f_lineno: 2031 / > f_back.f_code.co_filename: > │ > \mpmath\libmp\gammazeta.py / arg: None > │ > │ line(gamma_) / f_code.co_name: to_fixed > / f_locals: s=(0, 1, > │ > 0, 1), prec=83, sign=0, man=1, exp=0, bc=1, offset=83 / > f_lineno: 513 / > │ > f_code.co_filename: \mpmath\libmp\libmpf.py / > f_back.f_lineno: 2031 / > │ > f_back.f_code.co_filename: \mpmath\libmp\gammazeta.py / > arg: None > │ > │ line(gamma_) / f_code.co_name: to_fixed > / f_locals: s=(0, 1, > │ > 0, 1), prec=83, sign=0, man=1, exp=0, bc=1, offset=83 / > f_lineno: 517 / > │ > f_code.co_filename: \mpmath\libmp\libmpf.py / > f_back.f_lineno: 2031 / > │ > f_back.f_code.co_filename: \mpmath\libmp\gammazeta.py / > arg: None > │ > │ gamma_ / result: (-1.51425318049776e-67 > + > │ > 2.79082155561748e-69j) / count: 289 > │ > │ gamma__ / s: Complex { re: 1.0, im: > -100.0 } / result: > │ > Ok(Complex { re: -1.514253180497756e-67, im: > 2.7908215556174775e-69 }) > │ > │ zeta__ / s: Complex { re: 0.0, im: 100.0 > } / result: > │ > Ok(Complex { re: 6.51721042625301, im: 0.18128842533791736 > }) / z: Complex { re: > │ > 0.0, im: 0.0 } > │ > │ { name = __assert_ne; actual = > +6.517210; expected = > │ > +0.000000 } > │ > │ { name = __assert_ne; actual = > +0.181288; expected = > │ > +0.000000 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## test_critical_strip > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl test_critical_strip log = run_test log fun zeta, gamma > => > │ > (join [[ > │ > .^(0.5, 14.134725) > │ > .^(0.75, 20.5) > │ > .^(1.25, 30.1) > │ > .^(0.25, 40.0) > │ > .^(1.0, 50.0) > │ > ]]) > │ > |> listm.iter fun s => > │ > inl result = zeta s > │ > result |> re |> _assert_ne 0 > │ > result |> im |> _assert_ne 0 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex pyo3 > │ > > │ > test_critical_strip true > │ > > │ > ── [ 10.14s - return value ] > ─────────────────────────────────────────────────── > │ > │ zeta_ / s: (0.5, 14.134725) / count: 0 > │ > │ call(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, > kwargs={} / f_lineno: 528 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, > kwargs={} / f_lineno: 530 / > │ > f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, > kwargs={}, d=0 / f_lineno: > │ > 531 / f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, > kwargs={}, d=0 / f_lineno: > │ > 532 / f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: > │ > s=(0.5+14.134725j), a=1, derivative=0, method=None, > kwargs={}, d=0 / f_lineno: > │ > 533 / f_code.co_filename: \mpmath\functions\zeta.py / > f_back.f_lineno: 25 / > │ > f_back.f_code.co_filename: / arg: None > │ > │ call(zeta_) / f_code.co_name: f / > f_locals: > │ > x=(0.5+14.134725j), kwargs={}, name='zeta' / f_lineno: 989 > / f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / > f_back.f_code.co_filename: > │ > \mpmath\functions\zeta.py / arg: None > │ > │ line(zeta_) / > f_code...23535862290161314995 / f_lineno: 1648 > │ > / f_code.co_filename: \mpmath\libmp\gammazeta.py / > f_back.f_lineno: 2050 / > │ > f_back.f_code.co_filename: \mpmath\libmp\gammazeta.py / > arg: None > │ > │ line(gamma_) / f_code.co_name: > complex_stirling_series / > │ > f_locals: x=0, y=-241785163922925834941235200, prec=82, > │ > _m=12089258196146291747061760000, tre=0, tim=396, > ure=-1934281311383406679530, > │ > uim=0, sre=4443714077719696485012210, > sim=241793223535862290161314995 / > │ > f_lineno: 1649 / f_code.co_filename: > \mpmath\libmp\gammazeta.py / > │ > f_back.f_lineno: 2050 / f_back.f_code.co_filename: > \mpmath\libmp\gammazeta.py / > │ > arg: None > │ > │ line(gamma_) / f_code.co_name: > complex_stirling_series / > │ > f_locals: x=0, y=-241785163922925834941235200, prec=82, > │ > _m=12089258196146291747061760000, tre=0, tim=396, > ure=-1934281311383406679530, > │ > uim=0, sre=4443714077719696485012210, > sim=241793223535862290161314997 / > │ > f_lineno: 1650 / f_code.co_filename: > \mpmath\libmp\gammazeta.py / > │ > f_back.f_lineno: 2050 / f_back.f_code.co_filename: > \mpmath\libmp\gammazeta.py / > │ > arg: None > │ > │ gamma_ / result: (2.63173210619768e-35 -│ > 8.16464935465334e-36j) / count: 262 > │ > │ gamma__ / s: Complex { re: 0.0, im: > -50.0 } / result: > │ > Ok(Complex { re: 2.6317321061976804e-35, im: > -8.164649354653339e-36 }) > │ > │ zeta__ / s: Complex { re: 1.0, im: 50.0 > } / result: > │ > Ok(Complex { re: 0.44103873082309397, im: 0.281582455029683 > }) / z: Complex { > │ > re: 0.0, im: 0.0 } > │ > │ { name = __assert_ne; actual = > +0.441039; expected = > │ > +0.000000 } > │ > │ { name = __assert_ne; actual = > +0.281582; expected = > │ > +0.000000 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## > test_reflection_formula_for_specific_value > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl test_reflection_formula_for_specific_value log = > run_test log fun zeta, > │ > gamma => > │ > (join [[ > │ > .^(3, 4) > │ > .^(2.5, -3.5) > │ > .^(1.5, 2.5) > │ > .^(0.5, 14.134725) > │ > ]]) > │ > |> listm.iter fun s => > │ > inl lhs = zeta s > │ > inl reflection_coefficient = > │ > (.^(2, 0) .** s) > │ > .* (.^(pi, 0) .** (s .- .^(1, 0))) > │ > .* (.^(pi, 0) .* s ./ .^(2, 0) |> complex_sin) > │ > .* gamma (.^(1, 0) .- s) > │ > > │ > inl one_minus_s = .^(1 - re s, -(im s)) > │ > inl rhs = reflection_coefficient .* zeta > one_minus_s > │ > > │ > re lhs - re rhs |> abs |> _assert_lt 0.0001 > │ > im lhs - im rhs |> abs |> _assert_lt 0.0001 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex pyo3 > │ > > │ > test_reflection_formula_for_specific_value true > │ > > │ > ── [ 10.43s - return value ] > ─────────────────────────────────────────────────── > │ > │ zeta_ / s: (3.0, 4.0) / count: 0 > │ > │ call(zeta_) / f_code.co_name: zeta / > f_locals: s=(3+4j), a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 528 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(3+4j), a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 530 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(3+4j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(3+4j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(3+4j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ call(zeta_) / f_code.co_name: f / > f_locals: x=(3+4j), > │ > kwargs={}, name='zeta' / f_lineno: 989 / > f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / > f_back.f_code.co_filename: > │ > \mpmath\functions\zeta.py / arg: None > │ > │ line(zeta_) / f_code.co_name: f / > f_locals: x=(3+4j), > │ > kwargs={}, name='zeta' / f_linen... / f_code.co_filename: > │ > \mpmath\libmp\gammazeta.py / f_back.f_lineno: 1007 / > f_back.f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / arg: None > │ > │ line(gamma_) / f_code.co_name: mpc_gamma > / f_locals: z=((0, > │ > 1, -1, 1), (0, 3978571390186527, -48, 52)), prec=53, > rnd='n', type=0, a=(0, 1, > │ > -1, 1), b=(0, 3978571390186527, -48, 52), asign=0, aman=1, > aexp=-1, abc=1, > │ > bsign=0, bman=3978571390186527, bexp=-48, bbc=52, wp=79, > amag=0, bmag=4, mag=4, > │ > an=0, bn=14, absn=14j, gamma_size=56, need_reflection=0, > zorig=((0, 1, -1, 1), > │ > (0, 3978571390186527, -48, 52)), yfinal=0, balance_prec=0, > n_for_stirling=15, > │ > need_reduction=True, afix=2115620184325601055735808, > │ > bfix=8543917002826194402410496, r=0, zprered=((0, 1, -1, > 1), (0, > │ > 3978571390186527, -48, 52)), d=5, > rre=-542313259704087430481959845, > │ > one=604462909807314587353088, > rim=-1657865507045117397880679064, k=2 / f_lineno: > │ > 2043 / f_code.co_filename: \mpmath\libmp\gammazeta.py / > f_back.f_lineno: 1007 / > │ > f_back.f_code.co_filename: \mpmath\ctx_mp_python.py / arg: > None > │ > │ gamma_ / result: (-1.4455538437607e-10 -│ > 5.52278876877407e-10j) / count: 318 > │ > │ gamma__ / s: Complex { re: 0.5, im: > 14.134725 } / result: > │ > Ok(Complex { re: -1.4455538437606964e-10, im: > -5.522788768774066e-10 }) > │ > │ zeta__ / s: Complex { re: 0.5, im: > -14.134725 } / result: > │ > Ok(Complex { re: 1.7674298413849186e-8, im: > 1.1102028930923156e-7 }) / z: > │ > Complex { re: 0.0, im: 0.0 } > │ > │ { name = __assert_lt; actual = > +0.000000; expected = > │ > +0.000100 } > │ > │ { name = __assert_lt; actual = > +0.000000; expected = > │ > +0.000100 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## test_euler_product_formula > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl test_euler_product_formula log = run_test log fun zeta, > gamma => > │ > inl s_values = join [[ 2; 2.5; 3; 3.5; 4; 4.5; 5 ]] > │ > inl primes = join [[ 2; 3; 5; 7; 11; 13; 17; 19; 23; > 29; 31; 37; 41; 43; 47; > │ > 53; 59; 61; 67; 71 ]] > │ > s_values > │ > |> listm.iter fun s_re => > │ > inl s = .^(s_re, 0) > │ > inl product = > │ > (1, primes) > │ > ||> listm.fold fun acc x => > │ > acc * 1 / (1 - x ** -s_re) > │ > > │ > inl result = zeta s > │ > re result - product |> abs |> _assert_lt 0.01 > │ > result |> im |> _assert_lt 0.01 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -d num-complex pyo3 > │ > > │ > test_euler_product_formula true > │ > > │ > ── [ 10.07s - return value ] > ─────────────────────────────────────────────────── > │ > │ zeta_ / s: (2.0, 0.0) / count: 0 > │ > │ call(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 528 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={} / f_lineno: 530 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ line(zeta_) / f_code.co_name: zeta / > f_locals: s=(2+0j), a=1, > │ > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / > f_code.co_filename: > │ > \mpmath\functions\zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / > │ > arg: None > │ > │ call(zeta_) / f_code.co_name: f / > f_locals: x=(2+0j), > │ > kwargs={}, name='zeta' / f_lineno: 989 / > f_code.co_filename: > │ > \mpmath\ctx_mp_python.py / f_back.f_lineno: 533 / > f_back.f_code.co_filename: > │ > \mpmath\functions\zeta.py / arg: None > │ > │ line(zeta_) / f_code.co_name: f / > f_locals: x=(2+0j), > │ > kwargs={}, name='zeta' / f_linen..._code.co_filename: > \mpmath\libmp\gammazeta.py > │ > / arg: None > │ > │ line(zeta_) / f_code.co_name: > mpf_zeta_int / f_locals: s=5, > │ > prec=53, rnd='n', wp=73, m=19.25, needed_terms=623488, > n=33, d=[1, 2179, 792067, > │ > 115062531, 8930212611, 429314925315, 13983537177347, > 327666966438659, > │ > 5764846406968067, 78615943485956867, 851604426176701187, > 7470527451121689347, > │ > 53898915046387983107, 323897845985013506819, > 1638178356374090130179, > │ > 7034281785235908174595, 25833609859980306522883, > 81661917475887913739011, > │ > 223448095548034217779971, 532029677981012660429571, > 1108048631855905753375491, > │ > 2029946562680066824315651, 3292927237466655352791811, > 4769455369342763680768771, > │ > 6235511670496346417767171, 7463408621503347142796035, > 8322751284048216428487427, > │ > 8818779962777819524211459, 9050689474911140452082435, > 9136270117622166323831555, > │ > 9160252037839493347779331, 9165045885455648617505539, > 9165654628010081032708867, > │ > 9165691521498228451812099], > t=-84153986440240940095109733900764881301998910956, > │ > k=26 / f_lineno: 954 / f_code.co_filename: > \mpmath\libmp\gammazeta.py / > │ > f_back.f_lineno: 985 / f_back.f_code.co_filename: > \mpmath\libmp\gammazeta.py / > │ > arg: None > │ > │ zeta_ / result: (1.03692775514337 + > 0.0j) / count: 228 > │ > │ zeta / count: 0 / s: Complex { re: 5.0, > im: 0.0 } > │ > │ zeta__ / s: Complex { re: 5.0, im: 0.0 } > / result: Ok(Complex > │ > { re: 1.03692775514337, im: 0.0 }) / z: Complex { re: NaN, > im: NaN } > │ > │ { name = __assert_lt; actual = > +0.000000; expected = > │ > +0.010000 } > │ > │ { name = __assert_lt; actual = > +0.000000; expected = > │ > +0.010000 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## graph > │ > > │ > ── mermaid > ───────────────────────────────────────────────────────────────────── > │ > │ <div class="mermaidMarkdownContainer" > │ > style="background-color:white"> > │ > │ <link rel="stylesheet" > │ > > href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css" > │ > > > │ > │ <div > id="86aad4a755da493fb3a7bb8cf988ab36"></div> > │ > │ <script type="module"> > │ > │ > │ > │ import mermaid from > │ > > 'https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.esm.min.mjs'; > │ > │ let renderTarget = > │ > > document.getElementById('86aad4a755da493fb3a7bb8cf988ab36'); > │ > │ try { > │ > │ const {svg, > bindFunctions} = await > │ > mermaid.mermaidAPI.render( > │ > │ > │ > 'mermaid_86aad4a755da493fb3a7bb8cf988ab36', > │ > │ `graph TD > │ > │ zeta("zeta()") --> convert > │ > │ zeta --> f["f()"] > │ > │ f --> mpc_f["mpc_zeta()"] > │ > │ f --> mpf_f["mpf_zeta()"] > │ > │ convert --> from_float > │ > │ from_float --> from_man_exp > │ > │ from_man_exp --> python_bitcount > │ > │ python_bitcount --> _normalize > │ > │ _normalize --> make_mpc > │ > │ make_mpc --> > mpc_zeta["mpc_zeta()"] > │ > │ mpc_zeta --> > mpf_zeta["mpf_zeta()"] > │ > │ mpf_zeta --> to_int > │ > │ to_int --> > mpf_zeta_int["mpf_zeta_int()"] > │ > │ mpf_zeta_int --> > borwein_coefficients > │ > │ borwein_coefficients --> > │ > from_man_exp_2("from_man_exp()") > │ > │ from_man_exp_2 --> > │ > python_bitcount_2("python_bitcount()") > │ > │ python_bitcount_2 --> > _normalize_2("_normalize()") > │ > │ _normalize_2 --> > make_mpc_2("make_mpc()") > │ > │ make_mpc_2 --> stop_trace > │ > │ mpf_zeta_int --> mpf_bernoulli > │ > │ mpf_bernoulli --> bernoulli_size > │ > │ bernoulli_size --> mpf_rdiv_int > │ > │ mpf_rdiv_int --> > python_bitcount_3("python_bitcount()") > │ > │ python_bitcount_3 --> _normalize1 > │ > │ _normalize1 --> > from_man_exp_3("from_man_exp()") > │ > │ from_man_exp_3 --> > _normalize_3("_normalize()") > │ > │ _normalize_3 --> mpf_sub > │ > │ mpf_sub --> mpf_add > │ > │ mpf_add --> mpf_neg > │ > │ mpf_neg --> > _normalize1_2("_normalize1()") > │ > │ _normalize1_2 --> from_int > │ > │ from_int --> mpf_div > │ > │ mpf_div --> > python_bitcount_4("python_bitcount()") > │ > │ python_bitcount_4 --> > _normalize1_3("_normalize1()") > │ > │ _normalize1_3 --> > make_mpc_3("make_mpc()") > │ > │ make_mpc_3 --> > final_stop["stop_trace()"]`); > │ > │ renderTarget.innerHTML > = svg; > │ > │ > bindFunctions?.(renderTarget); > │ > │ } > │ > │ catch (error) { > │ > │ console.log(error); > │ > │ } > │ > │ </script> > │ > │ </div> > │ > │ > │ > > │ > ── mermaid > ───────────────────────────────────────────────────────────────────── > │ > │ <div class="mermaidMarkdownContainer" > │ > style="background-color:white"> > │ > │ <link rel="stylesheet" > │ > > href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css" > │ > > > │ > │ <div > id="3d1ab463793e493590419454e4bb0eb7"></div> > │ > │ <script type="module"> > │ > │ > │ > │ import mermaid from > │ > > 'https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.esm.min.mjs'; > │ > │ let renderTarget = > │ > > document.getElementById('3d1ab463793e493590419454e4bb0eb7'); > │ > │ try { > │ > │ const {svg, > bindFunctions} = await > │ > mermaid.mermaidAPI.render( > │ > │ > │ > 'mermaid_3d1ab463793e493590419454e4bb0eb7', > │ > │ `graph TD > │ > │ zeta_rust("zeta() - Rust") --> > num_traits("num-traits") > │ > │ zeta_rust --> > num_bigint("num-bigint") > │ > │ zeta_rust --> > rust_decimal("rust_decimal for > │ > precision") > │ > │ zeta_rust --> error_handling("Rust > Error Handling") > │ > │ > │ > │ num_traits --> > num_traits_usage("Use for common > │ > traits") > │ > │ num_bigint --> > bigint_operations("Arbitrary-precision > │ > arithmetic operations") > │ > │ rust_decimal --> > decimal_operations("High-precision > │ > decimal operations") > │ > │ error_handling --> > result_type("Use Result<T, E> for > │ > error handling") > │ > │ > │ > │ bigint_operations --> > convert_rust("convert() - Rust") > │ > │ bigint_operations --> > normalize_rust("_normalize() - > │ > Rust") > │ > │ > │ > │ convert_rust --> > from_float_rust("from_float() - Rust") > │ > │ from_float_rust --> > from_man_exp_rust("from_man_exp() - > │ > Rust") > │ > │ from_man_exp_rust --> > bitcount_rust("bitcount() - > │ > Rust") > │ > │ bitcount_rust --> normalize_rust > │ > │ normalize_rust --> > mpc_zeta_rust("mpc_zeta() - Rust") > │ > │ mpc_zeta_rust --> > mpf_zeta_rust("mpf_zeta() - Rust") > │ > │ mpf_zeta_rust --> > to_int_rust("to_int() - Rust") > │ > │ to_int_rust --> > mpf_zeta_int_rust("mpf_zeta_int() - > │ > Rust") > │ > │ > │ > │ mpf_zeta_int_rust --> > │ > borwein_coefficients_rust("borwein_coefficients() - Rust") > │ > │ borwein_coefficients_rust --> > │ > from_man_exp_rust_2("from_man_exp() - Rust") > │ > │ from_man_exp_rust_2 --> > bitcount_rust_2("bitcount() - > │ > Rust") > │ > │ bitcount_rust_2 --> > normalize_rust_2("_normalize() - > │ > Rust") > │ > │ normalize_rust_2 --> > make_mpc_rust("make_mpc() - Rust") > │ > │ > │ > │ mpf_zeta_int_rust --> > │ > mpf_bernoulli_rust("mpf_bernoulli() - Rust") > │ > │ mpf_bernoulli_rust --> > │ > bernoulli_size_rust("bernoulli_size() - Rust") > │ > │ bernoulli_size_rust --> > │ > mpf_rdiv_int_rust("mpf_rdiv_int() - Rust") > │ > │ mpf_rdiv_int_rust --> > bitcount_rust_3("bitcount() - > │ > Rust") > │ > │ bitcount_rust_3 --> > normalize1_rust("_normalize1() - > │ > Rust") > │ > │ normalize1_rust --> > from_man_exp_rust_3("from_man_exp() > │ > - Rust") > │ > │ from_man_exp_rust_3 --> > normalize_rust_3("_normalize() > │ > - Rust") > │ > │ normalize_rust_3 --> > mpf_sub_rust("mpf_sub() - Rust") > │ > │ mpf_sub_rust --> > mpf_add_rust("mpf_add() - Rust") > │ > │ mpf_add_rust --> > mpf_neg_rust("mpf_neg() - Rust") > │ > │ mpf_neg_rust --> > normalize1_rust_2("_normalize1() - > │ > Rust") > │ > │ normalize1_rust_2 --> > from_int_rust("from_int() - > │ > Rust") > │ > │ from_int_rust --> > mpf_div_rust("mpf_div() - Rust") > │ > │ mpf_div_rust --> > bitcount_rust_4("bitcount() - Rust") > │ > │ bitcount_rust_4 --> > normalize1_rust_3("_normalize1() - > │ > Rust") > │ > │ > │ > │ style zeta_rust > fill:#f9f,stroke:#333,stroke-width:4px > │ > │ style num_traits > fill:#bbf,stroke:#333,stroke-width:2px > │ > │ style num_bigint > fill:#bbf,stroke:#333,stroke-width:2px > │ > │ style rust_decimal > │ > fill:#bbf,stroke:#333,stroke-width:2px > │ > │ style error_handling > │ > fill:#bbf,stroke:#333,stroke-width:2px > │ > │ style bigint_operations > │ > fill:#bfb,stroke:#333,stroke-width:2px > │ > │ style decimal_operations > │ > fill:#bfb,stroke:#333,stroke-width:2px > │ > │ style result_type > │ > fill:#bfb,stroke:#333,stroke-width:2px`); > │ > │ renderTarget.innerHTML > = svg; > │ > │ > bindFunctions?.(renderTarget); > │ > │ } > │ > │ catch (error) { > │ > │ console.log(error); > │ > │ } > │ > │ </script> > │ > │ </div> > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## tests > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl tests () = > │ > testing.run_tests_log { > │ > test_zeta_at_known_values_ > │ > test_zeta_at_2_minus2 > │ > test_trivial_zero_at_negative_even___ > │ > test_non_trivial_zero___ > │ > test_real_part_greater_than_one___ > │ > test_zeta_at_1___ > │ > test_symmetry_across_real_axis___ > │ > test_behavior_near_origin___ > │ > test_imaginary_axis > │ > test_critical_strip > │ > test_reflection_formula_for_specific_value > │ > test_euler_product_formula > │ > } > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > ///! _ > │ > > │ > inl main (_args : array_base string) = > │ > inl value = 1i32 > │ > console.write_line ($'$"value: {!value}"' : string) > │ > 0i32 > │ > > │ > inl main () = > │ > $'let tests () = !tests ()' : () > │ > $'let main args = !main args' : () > │ 00:03:04 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 76840 } > │ 00:03:04 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/lib/math/math.dib.ipynb", "--to", "html", > "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/lib/math/math.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:03:06 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/lib/math/math.dib.ipynb to html > │ 00:03:06 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:03:06 v #7 ! validate(nb) > │ 00:03:06 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:03:06 v #9 ! return _pygments_highlight( > │ 00:03:08 v #10 ! [NbConvertApp] Writing 7173045 bytes > to c:\home\git\polyglot\lib\math\math.dib.html > │ 00:03:08 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 847 } > │ 00:03:08 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 847 } > │ 00:03:08 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/lib/math/math.dib.html'; (Get-Content $path -Raw) -replace > '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | > Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = > 'c:/home/git/polyglot/lib/math/math.dib.html'; (Get-Content $path -Raw) -replace > '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | > Set-Content $path"; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:03:08 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:03:08 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:03:08 d #16 spiral.run / dib / { exit_code = 0; > result_length = 77746 } > │ 00:00:00 d #1 writeDibCode / output: Spi / path: > math.dib > │ 00:00:00 d #2 parseDibCode / output: Spi / file: > math.dib > │ 00:00:00 d #1 persistCodeProject / packages: > [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; > deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: > math / hash: / code.Length: 276129 > │ 00:00:00 d #2 buildProject / fullPath: > c:\home\git\polyglot\target\Builder\math\math.fsproj > │ 00:00:00 d #1 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "c:/home/git\polyglot\target/Builder\math\math.fsproj" --configuration Release > --output "C:\home\git\polyglot\lib\math\dist" --runtime linux-x64"; options = { > command = dotnet publish "c:/home/git\polyglot\target/Builder\math\math.fsproj" > --configuration Release --output "C:\home\git\polyglot\lib\math\dist" --runtime > linux-x64; cancellation_token = None; environment_variables = [||]; on_line = > None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\math" } } > │ 00:00:01 v #2 > Determining projects to restore... > │ 00:00:01 v #3 > Paket version > 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 > │ 00:00:01 v #4 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:01 v #5 > Total time taken: 0 milliseconds > │ 00:00:01 v #6 > Paket version > 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 > │ 00:00:02 v #7 > Restoring > c:\home\git\polyglot\target\Builder\math\math.fsproj > │ 00:00:02 v #8 > Starting restore process. > │ 00:00:02 v #9 > Total time taken: 0 milliseconds > │ 00:00:02 v #10 > Restored > c:\home\git\polyglot\target\Builder\math\math.fsproj (in 298 ms). > │ 00:00:16 v #11 > math -> > c:\home\git\polyglot\target\Builder\math\bin\Release\net9.0\linux-x64\math.dll > │ 00:00:17 v #12 > math -> > C:\home\git\polyglot\lib\math\dist\ > │ 00:00:18 d #13 runtime.execute_with_options_async / { > exit_code = 0; output_length = 602; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\math\math.fsproj" --configuration Release > --output "C:\home\git\polyglot\lib\math\dist" --runtime linux-x64; > cancellation_token = None; environment_variables = [||]; on_line = None; stdin = > None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\math" } } > │ 00:00:18 d #14 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "c:/home/git\polyglot\target/Builder\math\math.fsproj" --configuration Release > --output "C:\home\git\polyglot\lib\math\dist" --runtime win-x64"; options = { > command = dotnet publish "c:/home/git\polyglot\target/Builder\math\math.fsproj" > --configuration Release --output "C:\home\git\polyglot\lib\math\dist" --runtime > win-x64; cancellation_token = None; environment_variables = [||]; on_line = > None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\math" } } > │ 00:00:18 v #15 > Determining projects to restore... > │ 00:00:19 v #16 > Paket version > 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 > │ 00:00:19 v #17 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:19 v #18 > Total time taken: 0 milliseconds > │ 00:00:19 v #19 > Restored > c:\home\git\polyglot\target\Builder\math\math.fsproj (in 287 ms). > │ 00:00:32 v #20 > math -> > c:\home\git\polyglot\target\Builder\math\bin\Release\net9.0\win-x64\math.dll > │ 00:00:34 v #21 > math -> > C:\home\git\polyglot\lib\math\dist\ > │ 00:00:34 d #22 runtime.execute_with_options_async / { > exit_code = 0; output_length = 409; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\math\math.fsproj" --configuration Release > --output "C:\home\git\polyglot\lib\math\dist" --runtime win-x64; > cancellation_token = None; environment_variables = [||]; on_line = None; stdin = > None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\math" } } > │ spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: > C:\home\git\polyglot\target\Builder\math > │ polyglot/scripts/core.ps1/ResolveLink #4 / Path: > C:\home\git\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: > / path_target: C:\home\git\polyglot / parent: > C:\home\git\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot > │ spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: > C:\home\git\polyglot\target\Builder\math / ProjectName: math / Language: rs / > Runtime: / root: C:\home\git\polyglot > │ Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) > │ > │ Thanks to the contributor! @Krzysztof-Cieslak > │ Stand with Ukraine! https://standwithukraine.com.ua/ > │ > │ Parsing target\Builder\math\math.fsproj... > │ Project and references (14 source files) parsed in 2819ms > │ > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInt > erop.dll for Fable plugins, skipping this assembly. Original error: The > exception has been reported. This internal exception should now be caught at an > error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The > exception has been reported. This internal exception should now be caught at an > error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. > Original error: The exception has been reported. This internal exception should > now be caught at an error recovery point on the stack. Original message: The > type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You > must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original > error: The exception has been reported. This internal exception should now be > caught at an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The > exception has been reported. This internal exception should now be caught at an > error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: > The exception has been reported. This internal exception should now be caught at > an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original > error: The exception has been reported. This internal exception should now be > caught at an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original > error: The exception has been reported. This internal exception should now be > caught at an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. > Original error: The exception has been reported. This internal exception should > now be caught at an error recovery point on the stack. Original message: The > type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You > must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Components.dll for Fable plugins, skipping this assembly. Original error: > The exception has been reported. This internal exception should now be caught at > an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ > │ Started Fable compilation... > │ > │ Fable compilation finished in 11665ms > │ > │ .\deps\spiral\lib\spiral\sm.fsx(561,0): (561,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\common.fsx(2199,0): (2199,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\crypto.fsx(2426,0): (2426,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\networking.fsx(5050,0): (5050,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\trace.fsx(2232,0): (2232,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\runtime.fsx(7321,0): (7321,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\file_system.fsx(19036,0): (19036,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\target\Builder\math\math.fs(46,0): (48,3) warning FABLE: > For Rust, support for F# static and module do bindings is disabled by default. > It can be enabled with the 'static_do_bindings' feature. Use at your own risk! > │ polyglot/lib/math/build.ps1 / path: > C:\home\git\polyglot\target\Builder\math/target/rs/math.rs > │ warning: > C:\home\git\polyglot\examples\rust\exercism\Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: C:\home\git\polyglot\lib\math\Cargo.toml: the > cargo feature `edition2024` has been stabilized in the 1.85 release and is no > longer necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > C:\home\git\polyglot\apps\spiral\temp\extension\Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > C:\home\git\polyglot\apps\chat\contract\Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > C:\home\git\polyglot\apps\chat\contract\tests\Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: C:\home\git\polyglot\apps\plot\Cargo.toml: the > cargo feature `edition2024` has been stabilized in the 1.85 release and is no > longer necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: C:\home\git\polyglot\workspace\Cargo.toml: the > cargo feature `edition2024` has been stabilized in the 1.85 release and is no > longer necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > C:\home\git\polyglot\apps\spiral\temp\cube\Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > C:\home\git\polyglot\apps\spiral\temp\test\Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ Compiling pyo3-build-config v0.23.3 > │ Compiling fable_library_rust v0.1.0 > (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust) > │ Compiling pyo3-macros-backend v0.23.3 > │ Compiling pyo3-ffi v0.23.3 > │ Compiling pyo3 v0.23.3 > │ Compiling pyo3-macros v0.23.3 > │ Compiling math v0.0.1 > (C:\home\git\polyglot\lib\math) > │ Finished `release` profile [optimized] target(s) in > 26.06s > │ Running unittests math.rs > (C:\home\git\polyglot\workspace\target\release\deps\math-7035482ad4544907.exe) > │ > │ running 12 tests > │ test module_728458a3::Math::test_behavior_near_origin___ ... > ok > │ test > module_728458a3::Math::test_real_part_greater_than_one___ ... ok > │ test module_728458a3::Math::test_symmetry_across_real_axis___ > ... ok > │ test module_728458a3::Math::test_zeta_at_1___ ... ok > │ test module_728458a3::Math::test_zeta_at_2_minus2 ... ok > │ test module_728458a3::Math::test_zeta_at_known_values_ ... ok > │ test module_728458a3::Math::test_critical_strip ... ok > │ test module_728458a3::Math::test_imaginary_axis ... ok > │ test module_728458a3::Math::test_euler_product_formula ... ok > │ test > module_728458a3::Math::test_trivial_zero_at_negative_even___ ... ok > │ test module_728458a3::Math::test_non_trivial_zero___ ... ok > │ test > module_728458a3::Math::test_reflection_formula_for_specific_value ... ok > │ > │ test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; > 0 filtered out; finished in 1.21s > │ > │ polyglot/lib/math/build.ps1 / $targetDir: > C:\home\git\polyglot\target\Builder\math / $projectName: math / $env:CI:'' > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../apps/plot/build.ps1 } | Invoke-Block > > ── [ 26.22s - stdout ] ───────────────────────────────────────────────────────── > │ warning: > C:\home\git\polyglot\apps\spiral\temp\extension\Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: C:\home\git\polyglot\apps\plot\Cargo.toml: the > cargo feature `edition2024` has been stabilized in the 1.85 release and is no > longer necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > C:\home\git\polyglot\apps\spiral\temp\test\Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > C:\home\git\polyglot\apps\spiral\temp\cube\Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > C:\home\git\polyglot\apps\chat\contract\Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > C:\home\git\polyglot\examples\rust\exercism\Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: C:\home\git\polyglot\workspace\Cargo.toml: the > cargo feature `edition2024` has been stabilized in the 1.85 release and is no > longer necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: C:\home\git\polyglot\lib\math\Cargo.toml: the > cargo feature `edition2024` has been stabilized in the 1.85 release and is no > longer necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > C:\home\git\polyglot\apps\chat\contract\tests\Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ Compiling fable_library_rust v0.1.0 > (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust) > │ Compiling plot v0.0.1 > (C:\home\git\polyglot\apps\plot) > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:667: > 33 > │ | > │ 667 | let v4: string = > append((v0.l0.get().clone()), (v1)); > │ | ^ > ^ > │ | > │ = note: `#[warn(unused_parens)]` on by default > │ help: remove these parentheses > │ | > │ 667 - let v4: string = > append((v0.l0.get().clone()), (v1)); > │ 667 + let v4: string = > append(v0.l0.get().clone(), (v1)); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:667: > 56 > │ | > │ 667 | let v4: string = > append((v0.l0.get().clone()), (v1)); > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 667 - let v4: string = > append((v0.l0.get().clone()), (v1)); > │ 667 + let v4: string = > append((v0.l0.get().clone()), v1); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:749: > 13 > │ | > │ 749 | (append( > │ | ^ > │ ... > │ 761 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 749 ~ append( > │ 750 | (append( > │ ... > │ 760 | string(" / "), > │ 761 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:762: > 13 > │ | > │ 762 | (v180), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 762 - (v180), > │ 762 + v180, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:750: > 17 > │ | > │ 750 | (append( > │ | ^ > │ ... > │ 759 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 750 ~ append( > │ 751 | (append( > │ ... > │ 758 | > string("networking.test_port_open"), > │ 759 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:751: > 21 > │ | > │ 751 | (append( > │ | ^ > │ ... > │ 757 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 751 ~ append( > │ 752 | (append( > │ ... > │ 756 | string(" "), > │ 757 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:752: > 25 > │ | > │ 752 | (append( > │ | ^ > │ ... > │ 755 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 752 ~ append( > │ 753 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 754 | > (toString(v0.l0.get().clone())), > │ 755 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:753: > 29 > │ | > │ 753 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 753 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 753 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:754: > 29 > │ | > │ 754 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 754 - > (toString(v0.l0.get().clone())), > │ 754 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:753: > 37 > │ | > │ 753 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 753 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 753 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:753: > 45 > │ | > │ 753 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 753 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 753 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:753: > 74 > │ | > │ 753 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 753 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 753 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:753: > 53 > │ | > │ 753 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 753 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 753 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:905: > 13 > │ | > │ 905 | (append( > │ | ^ > │ ... > │ 917 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 905 ~ append( > │ 906 | (append( > │ ... > │ 916 | string(" / "), > │ 917 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:918: > 13 > │ | > │ 918 | (v107), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 918 - (v107), > │ 918 + v107, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:906: > 17 > │ | > │ 906 | (append( > │ | ^ > │ ... > │ 915 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 906 ~ append( > │ 907 | (append( > │ ... > │ 914 | > string("async.run_with_timeout_async"), > │ 915 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:907: > 21 > │ | > │ 907 | (append( > │ | ^ > │ ... > │ 913 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 907 ~ append( > │ 908 | (append( > │ ... > │ 912 | string(" "), > │ 913 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:908: > 25 > │ | > │ 908 | (append( > │ | ^ > │ ... > │ 911 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 908 ~ append( > │ 909 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 910 | > (toString(v0.l0.get().clone())), > │ 911 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:909: > 29 > │ | > │ 909 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 909 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 909 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:910: > 29 > │ | > │ 910 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 910 - > (toString(v0.l0.get().clone())), > │ 910 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:909: > 37 > │ | > │ 909 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 909 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 909 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:909: > 45 > │ | > │ 909 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 909 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 909 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:909: > 74 > │ | > │ 909 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 909 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 909 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:909: > 53 > │ | > │ 909 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 909 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 909 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1023 > :13 > │ | > │ 1023 | (append( > │ | ^ > │ ... > │ 1035 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1023 ~ append( > │ 1024 | (append( > │ ... > │ 1034 | string(" / "), > │ 1035 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1036 > :13 > │ | > │ 1036 | (v180), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1036 - (v180), > │ 1036 + v180, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1024 > :17 > │ | > │ 1024 | (append( > │ | ^ > │ ... > │ 1033 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1024 ~ append( > │ 1025 | (append( > │ ... > │ 1032 | > string("async.run_with_timeout_async**"), > │ 1033 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1025 > :21 > │ | > │ 1025 | (append( > │ | ^ > │ ... > │ 1031 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1025 ~ append( > │ 1026 | (append( > │ ... > │ 1030 | string(" "), > │ 1031 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1026 > :25 > │ | > │ 1026 | (append( > │ | ^ > │ ... > │ 1029 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1026 ~ append( > │ 1027 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1028 | > (toString(v0.l0.get().clone())), > │ 1029 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1027 > :29 > │ | > │ 1027 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1027 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1027 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1028 > :29 > │ | > │ 1028 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1028 - > (toString(v0.l0.get().clone())), > │ 1028 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1027 > :37 > │ | > │ 1027 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1027 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1027 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1027 > :45 > │ | > │ 1027 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1027 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1027 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1027 > :74 > │ | > │ 1027 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1027 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1027 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1027 > :53 > │ | > │ 1027 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1027 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1027 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1206 > :13 > │ | > │ 1206 | (append( > │ | ^ > │ ... > │ 1218 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1206 ~ append( > │ 1207 | (append( > │ ... > │ 1217 | string(" / "), > │ 1218 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1219 > :13 > │ | > │ 1219 | (v367), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1219 - (v367), > │ 1219 + v367, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1207 > :17 > │ | > │ 1207 | (append( > │ | ^ > │ ... > │ 1216 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1207 ~ append( > │ 1208 | (append( > │ ... > │ 1215 | > string("networking.wait_for_port_access"), > │ 1216 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1208 > :21 > │ | > │ 1208 | (append( > │ | ^ > │ ... > │ 1214 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1208 ~ append( > │ 1209 | (append( > │ ... > │ 1213 | string(" "), > │ 1214 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1209 > :25 > │ | > │ 1209 | (append( > │ | ^ > │ ... > │ 1212 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1209 ~ append( > │ 1210 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1211 | > (toString(v0.l0.get().clone())), > │ 1212 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1210 > :29 > │ | > │ 1210 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1210 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1210 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1211 > :29 > │ | > │ 1211 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1211 - > (toString(v0.l0.get().clone())), > │ 1211 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1210 > :37 > │ | > │ 1210 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1210 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1210 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1210 > :45 > │ | > │ 1210 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1210 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1210 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1210 > :74 > │ | > │ 1210 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1210 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1210 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\networking.rs:1210 > :53 > │ | > │ 1210 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1210 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1210 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:837:33[0 > m > │ | > │ 837 | let v4: string = > append((v0.l0.get().clone()), (v1)); > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 837 - let v4: string = > append((v0.l0.get().clone()), (v1)); > │ 837 + let v4: string = > append(v0.l0.get().clone(), (v1)); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:837:56[0 > m > │ | > │ 837 | let v4: string = > append((v0.l0.get().clone()), (v1)); > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 837 - let v4: string = > append((v0.l0.get().clone()), (v1)); > │ 837 + let v4: string = > append((v0.l0.get().clone()), v1); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:881:13[0 > m > │ | > │ 881 | (append( > │ | ^ > │ ... > │ 893 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 881 ~ append( > │ 882 | (append( > │ ... > │ 892 | string(" / "), > │ 893 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:894:13[0 > m > │ | > │ 894 | (v10), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 894 - (v10), > │ 894 + v10, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:882:17[0 > m > │ | > │ 882 | (append( > │ | ^ > │ ... > │ 891 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 882 ~ append( > │ 883 | (append( > │ ... > │ 890 | > string("runtime.current_process_kill / exiting... 3"), > │ 891 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:883:21[0 > m > │ | > │ 883 | (append( > │ | ^ > │ ... > │ 889 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 883 ~ append( > │ 884 | (append( > │ ... > │ 888 | string(" "), > │ 889 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:884:25[0 > m > │ | > │ 884 | (append( > │ | ^ > │ ... > │ 887 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 884 ~ append( > │ 885 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 886 | > (toString(v0.l0.get().clone())), > │ 887 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:885:29[0 > m > │ | > │ 885 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 885 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 885 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:886:29[0 > m > │ | > │ 886 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 886 - > (toString(v0.l0.get().clone())), > │ 886 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:885:37[0 > m > │ | > │ 885 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 885 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 885 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:885:45[0 > m > │ | > │ 885 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 885 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 885 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:885:74[0 > m > │ | > │ 885 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 885 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 885 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:885:53[0 > m > │ | > │ 885 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 885 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 885 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:979:13[0 > m > │ | > │ 979 | (append( > │ | ^ > │ ... > │ 991 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 979 ~ append( > │ 980 | (append( > │ ... > │ 990 | string(" / "), > │ 991 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:992:13[0 > m > │ | > │ 992 | (v10), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 992 - (v10), > │ 992 + v10, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:980:17[0 > m > │ | > │ 980 | (append( > │ | ^ > │ ... > │ 989 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 980 ~ append( > │ 981 | (append( > │ ... > │ 988 | > string("runtime.current_process_kill / exiting... 2"), > │ 989 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:981:21[0 > m > │ | > │ 981 | (append( > │ | ^ > │ ... > │ 987 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 981 ~ append( > │ 982 | (append( > │ ... > │ 986 | string(" "), > │ 987 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:982:25[0 > m > │ | > │ 982 | (append( > │ | ^ > │ ... > │ 985 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 982 ~ append( > │ 983 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 984 | > (toString(v0.l0.get().clone())), > │ 985 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:983:29[0 > m > │ | > │ 983 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 983 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 983 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:984:29[0 > m > │ | > │ 984 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 984 - > (toString(v0.l0.get().clone())), > │ 984 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:983:37[0 > m > │ | > │ 983 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 983 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 983 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:983:45[0 > m > │ | > │ 983 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 983 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 983 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:983:74[0 > m > │ | > │ 983 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 983 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 983 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:983:53[0 > m > │ | > │ 983 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 983 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 983 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1042:13[ > 0m > │ | > │ 1042 | (append( > │ | ^ > │ ... > │ 1054 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1042 ~ append( > │ 1043 | (append( > │ ... > │ 1053 | string(" / "), > │ 1054 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1055:13[ > 0m > │ | > │ 1055 | (v10), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1055 - (v10), > │ 1055 + v10, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1043:17[ > 0m > │ | > │ 1043 | (append( > │ | ^ > │ ... > │ 1052 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1043 ~ append( > │ 1044 | (append( > │ ... > │ 1051 | > string("runtime.current_process_kill / exiting... 1"), > │ 1052 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1044:21[ > 0m > │ | > │ 1044 | (append( > │ | ^ > │ ... > │ 1050 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1044 ~ append( > │ 1045 | (append( > │ ... > │ 1049 | string(" "), > │ 1050 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1045:25[ > 0m > │ | > │ 1045 | (append( > │ | ^ > │ ... > │ 1048 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1045 ~ append( > │ 1046 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1047 | > (toString(v0.l0.get().clone())), > │ 1048 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1046:29[ > 0m > │ | > │ 1046 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1046 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1046 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1047:29[ > 0m > │ | > │ 1047 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1047 - > (toString(v0.l0.get().clone())), > │ 1047 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1046:37[ > 0m > │ | > │ 1046 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1046 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1046 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1046:45[ > 0m > │ | > │ 1046 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1046 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1046 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1046:74[ > 0m > │ | > │ 1046 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1046 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1046 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1046:53[ > 0m > │ | > │ 1046 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1046 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1046 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1123:30[ > 0m > │ | > │ 1123 | break '_method26 (match > v0.get().clone().as_ref() { > │ | ^ > │ ... > │ 1161 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1123 ~ break '_method26 match > v0.get().clone().as_ref() { > │ 1124 | Runtime::UH0::UH0_0 => > (v1.get().clone(), v2.get().clone(), v3.get().clone()), > │ ... > │ 1160 | } > │ 1161 ~ }; > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1168:58[ > 0m > │ | > │ 1168 | (Runtime::method27(v0, (v1) + > 1_i32))(append((v2), string(" "))) > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1168 - (Runtime::method27(v0, (v1) + > 1_i32))(append((v2), string(" "))) > │ 1168 + (Runtime::method27(v0, (v1) + > 1_i32))(append(v2, string(" "))) > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1231:25[ > 0m > │ | > │ 1231 | ((Runtime::method27((v3) > - 1_i32, 0_i32))(string(""))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1231 - ((Runtime::method27((v3) > - 1_i32, 0_i32))(string(""))), > │ 1231 + (Runtime::method27((v3) - > 1_i32, 0_i32))(string("")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1292:25[ > 0m > │ | > │ 1292 | ((Runtime::method27((v3) > - 1_i32, 0_i32))(string(""))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1292 - ((Runtime::method27((v3) > - 1_i32, 0_i32))(string(""))), > │ 1292 + (Runtime::method27((v3) - > 1_i32, 0_i32))(string("")), > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1309:30[ > 0m > │ | > │ 1309 | break '_method28 (match > v2.get().clone().as_ref() { > │ | ^ > │ ... > │ 1340 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1309 ~ break '_method28 match > v2.get().clone().as_ref() { > │ 1310 | Runtime::UH1::UH1_0 => { > │ ... > │ 1339 | } > │ 1340 ~ }; > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1347:30[ > 0m > │ | > │ 1347 | break '_method29 (if > (v1.get().clone()) >= 2_i64 { > │ | ^ > │ ... > │ 1378 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1347 ~ break '_method29 if > (v1.get().clone()) >= 2_i64 { > │ 1348 | false > │ ... > │ 1377 | } > │ 1378 ~ }; > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1394:30[ > 0m > │ | > │ 1394 | break '_method30 ({ > │ | ^ > │ ... > │ 1468 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1394 ~ break '_method30 { > │ 1395 | let v98: Runtime::US7 = if > string("") == (v1.get().clone()) { > │ ... > │ 1467 | } > │ 1468 ~ }; > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1448:36[ > 0m > │ | > │ 1448 | ... append((v0.get().clone()), > (ofChar(v110_0_0.clone()))); > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1448 - > append((v0.get().clone()), (ofChar(v110_0_0.clone()))); > │ 1448 + > append(v0.get().clone(), (ofChar(v110_0_0.clone()))); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1448:56[ > 0m > │ | > │ 1448 | ... append((v0.get().clone()), > (ofChar(v110_0_0.clone()))); > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1448 - > append((v0.get().clone()), (ofChar(v110_0_0.clone()))); > │ 1448 + > append((v0.get().clone()), ofChar(v110_0_0.clone())); > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1484:30[ > 0m > │ | > │ 1484 | break '_method31 (match > v4.get().clone().as_ref() { > │ | ^ > │ ... > │ 1519 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1484 ~ break '_method31 match > v4.get().clone().as_ref() { > │ 1485 | Runtime::UH1::UH1_0 => { > │ ... > │ 1518 | } > │ 1519 ~ }; > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1526:30[ > 0m > │ | > │ 1526 | break '_method32 (if > (v1.get().clone()) >= 3_i64 { > │ | ^ > │ ... > │ 1562 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1526 ~ break '_method32 if > (v1.get().clone()) >= 3_i64 { > │ 1527 | false > │ ... > │ 1561 | } > │ 1562 ~ }; > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1578:30[ > 0m > │ | > │ 1578 | break '_method33 ({ > │ | ^ > │ ... > │ 1652 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1578 ~ break '_method33 { > │ 1579 | let v106: Runtime::US7 = if > string("") == (v1.get().clone()) { > │ ... > │ 1651 | } > │ 1652 ~ }; > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1632:36[ > 0m > │ | > │ 1632 | ... append((v0.get().clone()), > (ofChar(v118_0_0.clone()))); > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1632 - > append((v0.get().clone()), (ofChar(v118_0_0.clone()))); > │ 1632 + > append(v0.get().clone(), (ofChar(v118_0_0.clone()))); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1632:56[ > 0m > │ | > │ 1632 | ... append((v0.get().clone()), > (ofChar(v118_0_0.clone()))); > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1632 - > append((v0.get().clone()), (ofChar(v118_0_0.clone()))); > │ 1632 + > append((v0.get().clone()), ofChar(v118_0_0.clone())); > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1659:30[ > 0m > │ | > │ 1659 | break '_method34 (if > (v1.get().clone()) >= (length(v0.get().clone())) { > │ | ^ > │ ... > │ 1671 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1659 ~ break '_method34 if > (v1.get().clone()) >= (length(v0.get().clone())) { > │ 1660 | v1.get().clone() > │ ... > │ 1670 | } > │ 1671 ~ }; > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1687:30[ > 0m > │ | > │ 1687 | break '_method35 ({ > │ | ^ > │ ... > │ 1737 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1687 ~ break '_method35 { > │ 1688 | let v66: Runtime::US7 = if > string("") == (v1.get().clone()) { > │ ... > │ 1736 | } > │ 1737 ~ }; > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1717:54[ > 0m > │ | > │ 1717 | let v0_temp: string = > append((v0.get().clone()), (ofChar(v66_0_0.clone()))); > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1717 - let v0_temp: string = > append((v0.get().clone()), (ofChar(v66_0_0.clone()))); > │ 1717 + let v0_temp: string = > append(v0.get().clone(), (ofChar(v66_0_0.clone()))); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:1717:74[ > 0m > │ | > │ 1717 | let v0_temp: string = > append((v0.get().clone()), (ofChar(v66_0_0.clone()))); > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1717 - let v0_temp: string = > append((v0.get().clone()), (ofChar(v66_0_0.clone()))); > │ 1717 + let v0_temp: string = > append((v0.get().clone()), ofChar(v66_0_0.clone())); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2094:37[ > 0m > │ | > │ 2094 | ... ((Runtime::method27((v421) > - 1_i32, 0_i32))(string(""))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2094 - > ((Runtime::method27((v421) - 1_i32, 0_i32))(string(""))), > │ 2094 + > (Runtime::method27((v421) - 1_i32, 0_i32))(string("")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2468:13[ > 0m > │ | > │ 2468 | (append( > │ | ^ > │ ... > │ 2480 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2468 ~ append( > │ 2469 | (append( > │ ... > │ 2479 | string(" / "), > │ 2480 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2481:13[ > 0m > │ | > │ 2481 | (v911), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 2481 - (v911), > │ 2481 + v911, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2469:17[ > 0m > │ | > │ 2469 | (append( > │ | ^ > │ ... > │ 2478 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2469 ~ append( > │ 2470 | (append( > │ ... > │ 2477 | > string("runtime.execute_with_options_async"), > │ 2478 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2470:21[ > 0m > │ | > │ 2470 | (append( > │ | ^ > │ ... > │ 2476 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2470 ~ append( > │ 2471 | (append( > │ ... > │ 2475 | string(" "), > │ 2476 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2471:25[ > 0m > │ | > │ 2471 | (append( > │ | ^ > │ ... > │ 2474 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2471 ~ append( > │ 2472 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2473 | > (toString(v0.l0.get().clone())), > │ 2474 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2472:29[ > 0m > │ | > │ 2472 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2472 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2472 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2473:29[ > 0m > │ | > │ 2473 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2473 - > (toString(v0.l0.get().clone())), > │ 2473 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2472:37[ > 0m > │ | > │ 2472 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2472 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2472 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2472:45[ > 0m > │ | > │ 2472 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2472 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2472 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2472:74[ > 0m > │ | > │ 2472 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 2472 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2472 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2472:53[ > 0m > │ | > │ 2472 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2472 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2472 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2594:13[ > 0m > │ | > │ 2594 | (append( > │ | ^ > │ ... > │ 2606 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2594 ~ append( > │ 2595 | (append( > │ ... > │ 2605 | string(" / "), > │ 2606 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2607:13[ > 0m > │ | > │ 2607 | (v11), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 2607 - (v11), > │ 2607 + v11, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2595:17[ > 0m > │ | > │ 2595 | (append( > │ | ^ > │ ... > │ 2604 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2595 ~ append( > │ 2596 | (append( > │ ... > │ 2603 | (v8), > │ 2604 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2596:21[ > 0m > │ | > │ 2596 | (append( > │ | ^ > │ ... > │ 2602 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2596 ~ append( > │ 2597 | (append( > │ ... > │ 2601 | string(" "), > │ 2602 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2603:21[ > 0m > │ | > │ 2603 | (v8), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 2603 - (v8), > │ 2603 + v8, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2597:25[ > 0m > │ | > │ 2597 | (append( > │ | ^ > │ ... > │ 2600 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2597 ~ append( > │ 2598 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2599 | > (toString(v0.l0.get().clone())), > │ 2600 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2598:29[ > 0m > │ | > │ 2598 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2598 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2598 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2599:29[ > 0m > │ | > │ 2599 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2599 - > (toString(v0.l0.get().clone())), > │ 2599 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2598:37[ > 0m > │ | > │ 2598 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2598 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2598 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2598:45[ > 0m > │ | > │ 2598 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2598 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2598 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2598:74[ > 0m > │ | > │ 2598 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 2598 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2598 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2598:53[ > 0m > │ | > │ 2598 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2598 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2598 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2755:13[ > 0m > │ | > │ 2755 | (append( > │ | ^ > │ ... > │ 2767 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2755 ~ append( > │ 2756 | (append( > │ ... > │ 2766 | string(" / "), > │ 2767 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2768:13[ > 0m > │ | > │ 2768 | (v143), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 2768 - (v143), > │ 2768 + v143, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2756:17[ > 0m > │ | > │ 2756 | (append( > │ | ^ > │ ... > │ 2765 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2756 ~ append( > │ 2757 | (append( > │ ... > │ 2764 | > string("runtime.execute_with_options_async / WaitForExitAsync"), > │ 2765 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2757:21[ > 0m > │ | > │ 2757 | (append( > │ | ^ > │ ... > │ 2763 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2757 ~ append( > │ 2758 | (append( > │ ... > │ 2762 | string(" "), > │ 2763 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2758:25[ > 0m > │ | > │ 2758 | (append( > │ | ^ > │ ... > │ 2761 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2758 ~ append( > │ 2759 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2760 | > (toString(v0.l0.get().clone())), > │ 2761 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2759:29[ > 0m > │ | > │ 2759 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2759 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2759 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2760:29[ > 0m > │ | > │ 2760 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2760 - > (toString(v0.l0.get().clone())), > │ 2760 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2759:37[ > 0m > │ | > │ 2759 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2759 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2759 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2759:45[ > 0m > │ | > │ 2759 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2759 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2759 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2759:74[ > 0m > │ | > │ 2759 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 2759 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2759 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:2759:53[ > 0m > │ | > │ 2759 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2759 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2759 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3030:13[ > 0m > │ | > │ 3030 | (append( > │ | ^ > │ ... > │ 3042 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3030 ~ append( > │ 3031 | (append( > │ ... > │ 3041 | string(" / "), > │ 3042 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3043:13[ > 0m > │ | > │ 3043 | (v913), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 3043 - (v913), > │ 3043 + v913, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3031:17[ > 0m > │ | > │ 3031 | (append( > │ | ^ > │ ... > │ 3040 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3031 ~ append( > │ 3032 | (append( > │ ... > │ 3039 | > string("runtime.execute_with_options_async"), > │ 3040 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3032:21[ > 0m > │ | > │ 3032 | (append( > │ | ^ > │ ... > │ 3038 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3032 ~ append( > │ 3033 | (append( > │ ... > │ 3037 | string(" "), > │ 3038 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3033:25[ > 0m > │ | > │ 3033 | (append( > │ | ^ > │ ... > │ 3036 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3033 ~ append( > │ 3034 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 3035 | > (toString(v0.l0.get().clone())), > │ 3036 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3034:29[ > 0m > │ | > │ 3034 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 3034 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 3034 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3035:29[ > 0m > │ | > │ 3035 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 3035 - > (toString(v0.l0.get().clone())), > │ 3035 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3034:37[ > 0m > │ | > │ 3034 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 3034 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 3034 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3034:45[ > 0m > │ | > │ 3034 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 3034 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 3034 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3034:74[ > 0m > │ | > │ 3034 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 3034 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 3034 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3034:53[ > 0m > │ | > │ 3034 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 3034 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 3034 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3191:30[ > 0m > │ | > │ 3191 | break '_method57 (if > (v1.get().clone()) >= 4_i64 { > │ | ^ > │ ... > │ 3232 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3191 ~ break '_method57 if > (v1.get().clone()) >= 4_i64 { > │ 3192 | false > │ ... > │ 3231 | } > │ 3232 ~ }; > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3248:30[ > 0m > │ | > │ 3248 | break '_method58 ({ > │ | ^ > │ ... > │ 3309 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3248 ~ break '_method58 { > │ 3249 | let v114: Runtime::US7 = if > string("") == (v1.get().clone()) { > │ ... > │ 3308 | } > │ 3309 ~ }; > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3289:36[ > 0m > │ | > │ 3289 | ... append((v0.get().clone()), > (ofChar(v114_0_0.clone()))); > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 3289 - > append((v0.get().clone()), (ofChar(v114_0_0.clone()))); > │ 3289 + > append(v0.get().clone(), (ofChar(v114_0_0.clone()))); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3289:56[ > 0m > │ | > │ 3289 | ... append((v0.get().clone()), > (ofChar(v114_0_0.clone()))); > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 3289 - > append((v0.get().clone()), (ofChar(v114_0_0.clone()))); > │ 3289 + > append((v0.get().clone()), ofChar(v114_0_0.clone())); > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3316:30[ > 0m > │ | > │ 3316 | break '_method60 (if > (v1.get().clone()) >= 3_i64 { > │ | ^ > │ ... > │ 3352 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3316 ~ break '_method60 if > (v1.get().clone()) >= 3_i64 { > │ 3317 | false > │ ... > │ 3351 | } > │ 3352 ~ }; > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3408:25[ > 0m > │ | > │ 3408 | ((Runtime::method27((v3) > - 1_i32, 0_i32))(string(""))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 3408 - ((Runtime::method27((v3) > - 1_i32, 0_i32))(string(""))), > │ 3408 + (Runtime::method27((v3) - > 1_i32, 0_i32))(string("")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3451:28[ > 0m > │ | > │ 3451 | append((ofChar('\\')), > (ofChar(v196_0_0.clone()))), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 3451 - append((ofChar('\\')), > (ofChar(v196_0_0.clone()))), > │ 3451 + append(ofChar('\\'), > (ofChar(v196_0_0.clone()))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3451:44[ > 0m > │ | > │ 3451 | append((ofChar('\\')), > (ofChar(v196_0_0.clone()))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 3451 - append((ofChar('\\')), > (ofChar(v196_0_0.clone()))), > │ 3451 + append((ofChar('\\')), > ofChar(v196_0_0.clone())), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3514:25[ > 0m > │ | > │ 3514 | ((Runtime::method27((v3) > - 1_i32, 0_i32))(string(""))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 3514 - ((Runtime::method27((v3) > - 1_i32, 0_i32))(string(""))), > │ 3514 + (Runtime::method27((v3) - > 1_i32, 0_i32))(string("")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3557:28[ > 0m > │ | > │ 3557 | append((ofChar('`')), > (ofChar(v196_0_0.clone()))), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 3557 - append((ofChar('`')), > (ofChar(v196_0_0.clone()))), > │ 3557 + append(ofChar('`'), > (ofChar(v196_0_0.clone()))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3557:43[ > 0m > │ | > │ 3557 | append((ofChar('`')), > (ofChar(v196_0_0.clone()))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 3557 - append((ofChar('`')), > (ofChar(v196_0_0.clone()))), > │ 3557 + append((ofChar('`')), > ofChar(v196_0_0.clone())), > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3580:30[ > 0m > │ | > │ 3580 | break '_method61 (match > v4.get().clone().as_ref() { > │ | ^ > │ ... > │ 3615 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3580 ~ break '_method61 match > v4.get().clone().as_ref() { > │ 3581 | Runtime::UH3::UH3_0 => { > │ ... > │ 3614 | } > │ 3615 ~ }; > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3622:30[ > 0m > │ | > │ 3622 | break '_method62 (match > v0.get().clone().as_ref() { > │ | ^ > │ ... > │ 3642 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3622 ~ break '_method62 match > v0.get().clone().as_ref() { > │ 3623 | Runtime::UH2::UH2_0 => > v1.get().clone(), > │ ... > │ 3641 | } > │ 3642 ~ }; > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3658:30[ > 0m > │ | > │ 3658 | break '_method59 ({ > │ | ^ > │ ... > │ 3762 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3658 ~ break '_method59 { > │ 3659 | let v106: Runtime::US7 = if > string("") == (v1.get().clone()) { > │ ... > │ 3761 | } > │ 3762 ~ }; > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3798:30[ > 0m > │ | > │ 3798 | break '_method64 ({ > │ | ^ > │ ... > │ 3871 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3798 ~ break '_method64 { > │ 3799 | let v106: Runtime::US7 = if > string("") == (v1.get().clone()) { > │ ... > │ 3870 | } > │ 3871 ~ }; > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:3887:30[ > 0m > │ | > │ 3887 | break '_method56 ({ > │ | ^ > │ ... > │ 4351 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3887 ~ break '_method56 { > │ 3888 | let v5: bool = string("") == > (v1.get().clone()); > │ ... > │ 4350 | } > │ 4351 ~ }; > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:4003:41[ > 0m > │ | > │ 4003 | ... > ((Runtime::method27((v4.get().clone()) - 1_i32, 0_i32))( > │ | ^ > │ 4004 | ... string(""), > │ 4005 | ... )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 4003 ~ > (Runtime::method27((v4.get().clone()) - 1_i32, 0_i32))( > │ 4004 | > string(""), > │ 4005 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\runtime.rs:4131:57[ > 0m > │ | > │ 4131 | ... ((Runtime::method27( > │ | ^ > │ ... > │ 4136 | ... )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 4131 ~ > (Runtime::method27( > │ 4132 | > (v306) - 1_i32, > │ ... > │ 4135 | > string("") > │ 4136 ~ > ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:611:33 > │ | > │ 611 | let v4: string = > append((v0.l0.get().clone()), (v1)); > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 611 - let v4: string = > append((v0.l0.get().clone()), (v1)); > │ 611 + let v4: string = > append(v0.l0.get().clone(), (v1)); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:611:56 > │ | > │ 611 | let v4: string = > append((v0.l0.get().clone()), (v1)); > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 611 - let v4: string = > append((v0.l0.get().clone()), (v1)); > │ 611 + let v4: string = > append((v0.l0.get().clone()), v1); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:776:13 > │ | > │ 776 | (append( > │ | ^ > │ ... > │ 788 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 776 ~ append( > │ 777 | (append( > │ ... > │ 787 | string(" / "), > │ 788 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:789:13 > │ | > │ 789 | (v29), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 789 - (v29), > │ 789 + v29, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:777:17 > │ | > │ 777 | (append( > │ | ^ > │ ... > │ 786 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 777 ~ append( > │ 778 | (append( > │ ... > │ 785 | (v8), > │ 786 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:778:21 > │ | > │ 778 | (append( > │ | ^ > │ ... > │ 784 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 778 ~ append( > │ 779 | (append( > │ ... > │ 783 | string(" "), > │ 784 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:785:21 > │ | > │ 785 | (v8), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 785 - (v8), > │ 785 + v8, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:779:25 > │ | > │ 779 | (append( > │ | ^ > │ ... > │ 782 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 779 ~ append( > │ 780 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 781 | > (toString(v0.l0.get().clone())), > │ 782 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:780:29 > │ | > │ 780 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 780 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 780 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:781:29 > │ | > │ 781 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 781 - > (toString(v0.l0.get().clone())), > │ 781 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:780:37 > │ | > │ 780 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 780 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 780 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:780:45 > │ | > │ 780 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 780 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 780 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:780:74 > │ | > │ 780 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 780 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 780 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\trace.rs:780:53 > │ | > │ 780 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 780 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 780 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:890 > :33 > │ | > │ 890 | let v4: string = > append((v0.l0.get().clone()), (v1)); > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 890 - let v4: string = > append((v0.l0.get().clone()), (v1)); > │ 890 + let v4: string = > append(v0.l0.get().clone(), (v1)); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:890 > :56 > │ | > │ 890 | let v4: string = > append((v0.l0.get().clone()), (v1)); > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 890 - let v4: string = > append((v0.l0.get().clone()), (v1)); > │ 890 + let v4: string = > append((v0.l0.get().clone()), v1); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:100 > 1:13 > │ | > │ 1001 | (append( > │ | ^ > │ ... > │ 1013 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1001 ~ append( > │ 1002 | (append( > │ ... > │ 1012 | string(" / "), > │ 1013 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:101 > 4:13 > │ | > │ 1014 | (v177), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1014 - (v177), > │ 1014 + v177, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:100 > 2:17 > │ | > │ 1002 | (append( > │ | ^ > │ ... > │ 1011 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1002 ~ append( > │ 1003 | (append( > │ ... > │ 1010 | > string("file_system.delete_directory_async"), > │ 1011 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:100 > 3:21 > │ | > │ 1003 | (append( > │ | ^ > │ ... > │ 1009 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1003 ~ append( > │ 1004 | (append( > │ ... > │ 1008 | string(" "), > │ 1009 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:100 > 4:25 > │ | > │ 1004 | (append( > │ | ^ > │ ... > │ 1007 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1004 ~ append( > │ 1005 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1006 | > (toString(v0.l0.get().clone())), > │ 1007 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:100 > 5:29 > │ | > │ 1005 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1005 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1005 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:100 > 6:29 > │ | > │ 1006 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1006 - > (toString(v0.l0.get().clone())), > │ 1006 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:100 > 5:37 > │ | > │ 1005 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1005 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1005 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:100 > 5:45 > │ | > │ 1005 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1005 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1005 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:100 > 5:74 > │ | > │ 1005 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1005 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1005 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:100 > 5:53 > │ | > │ 1005 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1005 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1005 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:117 > 4:13 > │ | > │ 1174 | (append( > │ | ^ > │ ... > │ 1186 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1174 ~ append( > │ 1175 | (append( > │ ... > │ 1185 | string(" / "), > │ 1186 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:118 > 7:13 > │ | > │ 1187 | (v251), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1187 - (v251), > │ 1187 + v251, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:117 > 5:17 > │ | > │ 1175 | (append( > │ | ^ > │ ... > │ 1184 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1175 ~ append( > │ 1176 | (append( > │ ... > │ 1183 | > string("file_system.wait_for_file_access"), > │ 1184 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:117 > 6:21 > │ | > │ 1176 | (append( > │ | ^ > │ ... > │ 1182 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1176 ~ append( > │ 1177 | (append( > │ ... > │ 1181 | string(" "), > │ 1182 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:117 > 7:25 > │ | > │ 1177 | (append( > │ | ^ > │ ... > │ 1180 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1177 ~ append( > │ 1178 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1179 | > (toString(v0.l0.get().clone())), > │ 1180 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:117 > 8:29 > │ | > │ 1178 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1178 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1178 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:117 > 9:29 > │ | > │ 1179 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1179 - > (toString(v0.l0.get().clone())), > │ 1179 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:117 > 8:37 > │ | > │ 1178 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1178 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1178 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:117 > 8:45 > │ | > │ 1178 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1178 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1178 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:117 > 8:74 > │ | > │ 1178 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1178 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1178 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:117 > 8:53 > │ | > │ 1178 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1178 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1178 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:135 > 2:13 > │ | > │ 1352 | (append( > │ | ^ > │ ... > │ 1364 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1352 ~ append( > │ 1353 | (append( > │ ... > │ 1363 | string(" / "), > │ 1364 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:136 > 5:13 > │ | > │ 1365 | (v290), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1365 - (v290), > │ 1365 + v290, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:135 > 3:17 > │ | > │ 1353 | (append( > │ | ^ > │ ... > │ 1362 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1353 ~ append( > │ 1354 | (append( > │ ... > │ 1361 | > string("file_system.read_all_text_async"), > │ 1362 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:135 > 4:21 > │ | > │ 1354 | (append( > │ | ^ > │ ... > │ 1360 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1354 ~ append( > │ 1355 | (append( > │ ... > │ 1359 | string(" "), > │ 1360 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:135 > 5:25 > │ | > │ 1355 | (append( > │ | ^ > │ ... > │ 1358 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1355 ~ append( > │ 1356 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1357 | > (toString(v0.l0.get().clone())), > │ 1358 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:135 > 6:29 > │ | > │ 1356 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1356 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1356 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:135 > 7:29 > │ | > │ 1357 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1357 - > (toString(v0.l0.get().clone())), > │ 1357 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:135 > 6:37 > │ | > │ 1356 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1356 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1356 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:135 > 6:45 > │ | > │ 1356 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1356 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1356 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:135 > 6:74 > │ | > │ 1356 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1356 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1356 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:135 > 6:53 > │ | > │ 1356 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1356 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1356 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:156 > 3:13 > │ | > │ 1563 | (append( > │ | ^ > │ ... > │ 1575 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1563 ~ append( > │ 1564 | (append( > │ ... > │ 1574 | string(" / "), > │ 1575 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:157 > 6:13 > │ | > │ 1576 | (v104), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1576 - (v104), > │ 1576 + v104, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:156 > 4:17 > │ | > │ 1564 | (append( > │ | ^ > │ ... > │ 1573 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1564 ~ append( > │ 1565 | (append( > │ ... > │ 1572 | > string("file_system.file_delete"), > │ 1573 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:156 > 5:21 > │ | > │ 1565 | (append( > │ | ^ > │ ... > │ 1571 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1565 ~ append( > │ 1566 | (append( > │ ... > │ 1570 | string(" "), > │ 1571 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:156 > 6:25 > │ | > │ 1566 | (append( > │ | ^ > │ ... > │ 1569 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1566 ~ append( > │ 1567 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1568 | > (toString(v0.l0.get().clone())), > │ 1569 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:156 > 7:29 > │ | > │ 1567 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1567 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1567 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:156 > 8:29 > │ | > │ 1568 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1568 - > (toString(v0.l0.get().clone())), > │ 1568 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:156 > 7:37 > │ | > │ 1567 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1567 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1567 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:156 > 7:45 > │ | > │ 1567 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1567 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1567 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:156 > 7:74 > │ | > │ 1567 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1567 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1567 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:156 > 7:53 > │ | > │ 1567 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1567 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1567 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:168 > 4:13 > │ | > │ 1684 | (append( > │ | ^ > │ ... > │ 1696 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1684 ~ append( > │ 1685 | (append( > │ ... > │ 1695 | string(" / "), > │ 1696 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:169 > 7:13 > │ | > │ 1697 | (v177), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1697 - (v177), > │ 1697 + v177, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:168 > 5:17 > │ | > │ 1685 | (append( > │ | ^ > │ ... > │ 1694 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1685 ~ append( > │ 1686 | (append( > │ ... > │ 1693 | > string("delete_file_async"), > │ 1694 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:168 > 6:21 > │ | > │ 1686 | (append( > │ | ^ > │ ... > │ 1692 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1686 ~ append( > │ 1687 | (append( > │ ... > │ 1691 | string(" "), > │ 1692 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:168 > 7:25 > │ | > │ 1687 | (append( > │ | ^ > │ ... > │ 1690 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1687 ~ append( > │ 1688 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1689 | > (toString(v0.l0.get().clone())), > │ 1690 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:168 > 8:29 > │ | > │ 1688 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1688 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1688 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:168 > 9:29 > │ | > │ 1689 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1689 - > (toString(v0.l0.get().clone())), > │ 1689 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:168 > 8:37 > │ | > │ 1688 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1688 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1688 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:168 > 8:45 > │ | > │ 1688 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1688 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1688 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:168 > 8:74 > │ | > │ 1688 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1688 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1688 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:168 > 8:53 > │ | > │ 1688 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1688 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1688 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:182 > 2:13 > │ | > │ 1822 | (append( > │ | ^ > │ ... > │ 1834 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1822 ~ append( > │ 1823 | (append( > │ ... > │ 1833 | string(" / "), > │ 1834 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:183 > 5:13 > │ | > │ 1835 | (v248), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1835 - (v248), > │ 1835 + v248, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:182 > 3:17 > │ | > │ 1823 | (append( > │ | ^ > │ ... > │ 1832 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1823 ~ append( > │ 1824 | (append( > │ ... > │ 1831 | string("move_file_async"), > │ 1832 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:182 > 4:21 > │ | > │ 1824 | (append( > │ | ^ > │ ... > │ 1830 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1824 ~ append( > │ 1825 | (append( > │ ... > │ 1829 | string(" "), > │ 1830 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:182 > 5:25 > │ | > │ 1825 | (append( > │ | ^ > │ ... > │ 1828 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1825 ~ append( > │ 1826 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1827 | > (toString(v0.l0.get().clone())), > │ 1828 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:182 > 6:29 > │ | > │ 1826 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1826 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1826 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:182 > 7:29 > │ | > │ 1827 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1827 - > (toString(v0.l0.get().clone())), > │ 1827 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:182 > 6:37 > │ | > │ 1826 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1826 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1826 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:182 > 6:45 > │ | > │ 1826 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1826 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1826 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:182 > 6:74 > │ | > │ 1826 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1826 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1826 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:182 > 6:53 > │ | > │ 1826 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1826 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1826 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:195 > 0:13 > │ | > │ 1950 | (append( > │ | ^ > │ ... > │ 1962 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1950 ~ append( > │ 1951 | (append( > │ ... > │ 1961 | string(" / "), > │ 1962 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:196 > 3:13 > │ | > │ 1963 | (v107), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1963 - (v107), > │ 1963 + v107, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:195 > 1:17 > │ | > │ 1951 | (append( > │ | ^ > │ ... > │ 1960 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1951 ~ append( > │ 1952 | (append( > │ ... > │ 1959 | > string("async.run_with_timeout_async"), > │ 1960 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:195 > 2:21 > │ | > │ 1952 | (append( > │ | ^ > │ ... > │ 1958 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1952 ~ append( > │ 1953 | (append( > │ ... > │ 1957 | string(" "), > │ 1958 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:195 > 3:25 > │ | > │ 1953 | (append( > │ | ^ > │ ... > │ 1956 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 1953 ~ append( > │ 1954 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1955 | > (toString(v0.l0.get().clone())), > │ 1956 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:195 > 4:29 > │ | > │ 1954 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1954 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1954 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:195 > 5:29 > │ | > │ 1955 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1955 - > (toString(v0.l0.get().clone())), > │ 1955 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:195 > 4:37 > │ | > │ 1954 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1954 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1954 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:195 > 4:45 > │ | > │ 1954 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1954 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1954 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:195 > 4:74 > │ | > │ 1954 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 1954 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1954 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:195 > 4:53 > │ | > │ 1954 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 1954 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 1954 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:205 > 5:13 > │ | > │ 2055 | (append( > │ | ^ > │ ... > │ 2067 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2055 ~ append( > │ 2056 | (append( > │ ... > │ 2066 | string(" / "), > │ 2067 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:206 > 8:13 > │ | > │ 2068 | (v180), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 2068 - (v180), > │ 2068 + v180, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:205 > 6:17 > │ | > │ 2056 | (append( > │ | ^ > │ ... > │ 2065 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2056 ~ append( > │ 2057 | (append( > │ ... > │ 2064 | > string("async.run_with_timeout_async**"), > │ 2065 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:205 > 7:21 > │ | > │ 2057 | (append( > │ | ^ > │ ... > │ 2063 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2057 ~ append( > │ 2058 | (append( > │ ... > │ 2062 | string(" "), > │ 2063 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:205 > 8:25 > │ | > │ 2058 | (append( > │ | ^ > │ ... > │ 2061 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2058 ~ append( > │ 2059 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2060 | > (toString(v0.l0.get().clone())), > │ 2061 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:205 > 9:29 > │ | > │ 2059 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2059 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2059 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:206 > 0:29 > │ | > │ 2060 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2060 - > (toString(v0.l0.get().clone())), > │ 2060 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:205 > 9:37 > │ | > │ 2059 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2059 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2059 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:205 > 9:45 > │ | > │ 2059 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2059 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2059 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:205 > 9:74 > │ | > │ 2059 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 2059 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2059 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:205 > 9:53 > │ | > │ 2059 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2059 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2059 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:217 > 3:13 > │ | > │ 2173 | (append( > │ | ^ > │ ... > │ 2185 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2173 ~ append( > │ 2174 | (append( > │ ... > │ 2184 | string(" / "), > │ 2185 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:218 > 6:13 > │ | > │ 2186 | (v180), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 2186 - (v180), > │ 2186 + v180, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:217 > 4:17 > │ | > │ 2174 | (append( > │ | ^ > │ ... > │ 2183 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2174 ~ append( > │ 2175 | (append( > │ ... > │ 2182 | > string("file_system.read_all_text_retry_async"), > │ 2183 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:217 > 5:21 > │ | > │ 2175 | (append( > │ | ^ > │ ... > │ 2181 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2175 ~ append( > │ 2176 | (append( > │ ... > │ 2180 | string(" "), > │ 2181 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:217 > 6:25 > │ | > │ 2176 | (append( > │ | ^ > │ ... > │ 2179 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2176 ~ append( > │ 2177 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2178 | > (toString(v0.l0.get().clone())), > │ 2179 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:217 > 7:29 > │ | > │ 2177 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2177 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2177 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:217 > 8:29 > │ | > │ 2178 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2178 - > (toString(v0.l0.get().clone())), > │ 2178 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:217 > 7:37 > │ | > │ 2177 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2177 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2177 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:217 > 7:45 > │ | > │ 2177 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2177 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2177 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:217 > 7:74 > │ | > │ 2177 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 2177 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2177 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:217 > 7:53 > │ | > │ 2177 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2177 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2177 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:245 > 0:13 > │ | > │ 2450 | (append( > │ | ^ > │ ... > │ 2462 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2450 ~ append( > │ 2451 | (append( > │ ... > │ 2461 | string(" / "), > │ 2462 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:246 > 3:13 > │ | > │ 2463 | (v216), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 2463 - (v216), > │ 2463 + v216, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:245 > 1:17 > │ | > │ 2451 | (append( > │ | ^ > │ ... > │ 2460 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2451 ~ append( > │ 2452 | (append( > │ ... > │ 2459 | > string("file_system.create_dir"), > │ 2460 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:245 > 2:21 > │ | > │ 2452 | (append( > │ | ^ > │ ... > │ 2458 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2452 ~ append( > │ 2453 | (append( > │ ... > │ 2457 | string(" "), > │ 2458 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:245 > 3:25 > │ | > │ 2453 | (append( > │ | ^ > │ ... > │ 2456 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2453 ~ append( > │ 2454 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2455 | > (toString(v0.l0.get().clone())), > │ 2456 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:245 > 4:29 > │ | > │ 2454 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2454 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2454 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:245 > 5:29 > │ | > │ 2455 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2455 - > (toString(v0.l0.get().clone())), > │ 2455 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:245 > 4:37 > │ | > │ 2454 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2454 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2454 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:245 > 4:45 > │ | > │ 2454 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2454 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2454 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:245 > 4:74 > │ | > │ 2454 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 2454 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2454 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:245 > 4:53 > │ | > │ 2454 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2454 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2454 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:253 > 9:13 > │ | > │ 2539 | (append( > │ | ^ > │ ... > │ 2551 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2539 ~ append( > │ 2540 | (append( > │ ... > │ 2550 | string(" / "), > │ 2551 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:255 > 2:13 > │ | > │ 2552 | (v104), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 2552 - (v104), > │ 2552 + v104, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:254 > 0:17 > │ | > │ 2540 | (append( > │ | ^ > │ ... > │ 2549 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2540 ~ append( > │ 2541 | (append( > │ ... > │ 2548 | > string("file_system.create_dir"), > │ 2549 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:254 > 1:21 > │ | > │ 2541 | (append( > │ | ^ > │ ... > │ 2547 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2541 ~ append( > │ 2542 | (append( > │ ... > │ 2546 | string(" "), > │ 2547 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:254 > 2:25 > │ | > │ 2542 | (append( > │ | ^ > │ ... > │ 2545 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2542 ~ append( > │ 2543 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2544 | > (toString(v0.l0.get().clone())), > │ 2545 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:254 > 3:29 > │ | > │ 2543 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2543 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2543 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:254 > 4:29 > │ | > │ 2544 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2544 - > (toString(v0.l0.get().clone())), > │ 2544 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:254 > 3:37 > │ | > │ 2543 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2543 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2543 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:254 > 3:45 > │ | > │ 2543 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2543 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2543 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:254 > 3:74 > │ | > │ 2543 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 2543 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2543 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:254 > 3:53 > │ | > │ 2543 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2543 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2543 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:266 > 2:13 > │ | > │ 2662 | (append( > │ | ^ > │ ... > │ 2674 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2662 ~ append( > │ 2663 | (append( > │ ... > │ 2673 | string(" / "), > │ 2674 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:267 > 5:13 > │ | > │ 2675 | (v177), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 2675 - (v177), > │ 2675 + v177, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:266 > 3:17 > │ | > │ 2663 | (append( > │ | ^ > │ ... > │ 2672 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2663 ~ append( > │ 2664 | (append( > │ ... > │ 2671 | > string("file_system.create_dir"), > │ 2672 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:266 > 4:21 > │ | > │ 2664 | (append( > │ | ^ > │ ... > │ 2670 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2664 ~ append( > │ 2665 | (append( > │ ... > │ 2669 | string(" "), > │ 2670 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:266 > 5:25 > │ | > │ 2665 | (append( > │ | ^ > │ ... > │ 2668 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2665 ~ append( > │ 2666 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2667 | > (toString(v0.l0.get().clone())), > │ 2668 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:266 > 6:29 > │ | > │ 2666 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2666 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2666 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:266 > 7:29 > │ | > │ 2667 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2667 - > (toString(v0.l0.get().clone())), > │ 2667 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:266 > 6:37 > │ | > │ 2666 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2666 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2666 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:266 > 6:45 > │ | > │ 2666 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2666 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2666 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:266 > 6:74 > │ | > │ 2666 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 2666 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2666 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:266 > 6:53 > │ | > │ 2666 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2666 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 2666 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:278 > 6:74 > │ | > │ 2786 | (File_system::method95(v0, > v1.clone(), (v2) + 1_i32))(append((v3), (v1))) > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 2786 - (File_system::method95(v0, > v1.clone(), (v2) + 1_i32))(append((v3), (v1))) > │ 2786 + (File_system::method95(v0, > v1.clone(), (v2) + 1_i32))(append(v3, (v1))) > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:278 > 6:80 > │ | > │ 2786 | (File_system::method95(v0, > v1.clone(), (v2) + 1_i32))(append((v3), (v1))) > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 2786 - (File_system::method95(v0, > v1.clone(), (v2) + 1_i32))(append((v3), (v1))) > │ 2786 + (File_system::method95(v0, > v1.clone(), (v2) + 1_i32))(append((v3), v1)) > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:280 > 0:13 > │ | > │ 2800 | ((File_system::method95(32_i32 - > (length(v0.clone())), v3, 0_i32))(string(""))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2800 - ((File_system::method95(32_i32 - > (length(v0.clone())), v3, 0_i32))(string(""))), > │ 2800 + (File_system::method95(32_i32 - > (length(v0.clone())), v3, 0_i32))(string("")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:280 > 1:13 > │ | > │ 2801 | (v0), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 2801 - (v0), > │ 2801 + v0, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:280 > 4:13 > │ | > │ 2804 | (append( > │ | ^ > │ ... > │ 2825 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2804 ~ append( > │ 2805 | (append( > │ ... > │ 2824 | string("-"), > │ 2825 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:282 > 6:13 > │ | > │ 2826 | (getSlice(v13, Some(20_i32), > Some((32_i32) - 1_i32))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2826 - (getSlice(v13, Some(20_i32), > Some((32_i32) - 1_i32))), > │ 2826 + getSlice(v13, Some(20_i32), > Some((32_i32) - 1_i32)), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:280 > 5:17 > │ | > │ 2805 | (append( > │ | ^ > │ ... > │ 2823 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2805 ~ append( > │ 2806 | (append( > │ ... > │ 2822 | (getSlice(v13.clone(), > Some(16_i32), Some((20_i32) - 1_i32))), > │ 2823 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:280 > 6:21 > │ | > │ 2806 | (append( > │ | ^ > │ ... > │ 2821 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2806 ~ append( > │ 2807 | (append( > │ ... > │ 2820 | string("-"), > │ 2821 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:282 > 2:21 > │ | > │ 2822 | (getSlice(v13.clone(), > Some(16_i32), Some((20_i32) - 1_i32))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2822 - (getSlice(v13.clone(), > Some(16_i32), Some((20_i32) - 1_i32))), > │ 2822 + getSlice(v13.clone(), > Some(16_i32), Some((20_i32) - 1_i32)), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:280 > 7:25 > │ | > │ 2807 | (append( > │ | ^ > │ ... > │ 2819 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2807 ~ append( > │ 2808 | (append( > │ ... > │ 2818 | > (getSlice(v13.clone(), Some(12_i32), Some((16_i32) - 1_i32))), > │ 2819 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:280 > 8:29 > │ | > │ 2808 | ... (append( > │ | ^ > │ ... > │ 2817 | ... )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2808 ~ append( > │ 2809 | (append( > │ ... > │ 2816 | string("-"), > │ 2817 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:281 > 8:29 > │ | > │ 2818 | ... (getSlice(v13.clone(), > Some(12_i32), Some((16_i32) - 1_i32))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2818 - > (getSlice(v13.clone(), Some(12_i32), Some((16_i32) - 1_i32))), > │ 2818 + getSlice(v13.clone(), > Some(12_i32), Some((16_i32) - 1_i32)), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:280 > 9:33 > │ | > │ 2809 | ... (append( > │ | ^ > │ ... > │ 2815 | ... )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2809 ~ append( > │ 2810 | (append( > │ ... > │ 2814 | > (getSlice(v13.clone(), Some(8_i32), Some((12_i32) - 1_i32))), > │ 2815 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:281 > 0:37 > │ | > │ 2810 | ... (append( > │ | ^ > │ ... > │ 2813 | ... )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 2810 ~ append( > │ 2811 | > (getSlice(v13.clone(), Some(0_i32), Some((8_i32) - 1_i32))), > │ 2812 | > string("-"), > │ 2813 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:281 > 4:37 > │ | > │ 2814 | ... (getSlice(v13.clone(), > Some(8_i32), Some((12_i32) - 1_i32))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2814 - > (getSlice(v13.clone(), Some(8_i32), Some((12_i32) - 1_i32))), > │ 2814 + > getSlice(v13.clone(), Some(8_i32), Some((12_i32) - 1_i32)), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:281 > 1:41 > │ | > │ 2811 | ... (getSlice(v13.clone(), > Some(0_i32), Some((8_i32) - 1_i32))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 2811 - > (getSlice(v13.clone(), Some(0_i32), Some((8_i32) - 1_i32))), > │ 2811 + > getSlice(v13.clone(), Some(0_i32), Some((8_i32) - 1_i32)), > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:371 > 7:31 > │ | > │ 3717 | break '_method126 (if > v3(File_system::method79(v4.get().clone(), v0.get().clone())) { > │ | ^ > │ ... > │ 3758 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3717 ~ break '_method126 if > v3(File_system::method79(v4.get().clone(), v0.get().clone())) { > │ 3718 | > File_system::US17::US17_0(v4.get().clone()) > │ ... > │ 3757 | } > │ 3758 ~ }; > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:374 > 2:25 > │ | > │ 3742 | (concat(new_array(&[ > │ | ^ > │ ... > │ 3749 | ]))), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3742 ~ concat(new_array(&[ > │ 3743 | > string("file_system.find_parent / No parent for "), > │ ... > │ 3748 | }, > │ 3749 ~ ])), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:378 > 6:21 > │ | > │ 3786 | (concat(new_array(&[ > │ | ^ > │ ... > │ 3789 | ]))), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3786 ~ concat(new_array(&[ > │ 3787 | > string("file_system.find_parent / No parent for "), > │ 3788 | if v2 { string("file") } > else { string("dir") }, > │ 3789 ~ ])), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:387 > 0:13 > │ | > │ 3870 | (append( > │ | ^ > │ ... > │ 3882 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3870 ~ append( > │ 3871 | (append( > │ ... > │ 3881 | string(" / "), > │ 3882 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:388 > 3:13 > │ | > │ 3883 | (v177), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 3883 - (v177), > │ 3883 + v177, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:387 > 1:17 > │ | > │ 3871 | (append( > │ | ^ > │ ... > │ 3880 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3871 ~ append( > │ 3872 | (append( > │ ... > │ 3879 | > string("file_system.get_workspace_root"), > │ 3880 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:387 > 2:21 > │ | > │ 3872 | (append( > │ | ^ > │ ... > │ 3878 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3872 ~ append( > │ 3873 | (append( > │ ... > │ 3877 | string(" "), > │ 3878 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:387 > 3:25 > │ | > │ 3873 | (append( > │ | ^ > │ ... > │ 3876 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 3873 ~ append( > │ 3874 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 3875 | > (toString(v0.l0.get().clone())), > │ 3876 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:387 > 4:29 > │ | > │ 3874 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 3874 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 3874 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:387 > 5:29 > │ | > │ 3875 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 3875 - > (toString(v0.l0.get().clone())), > │ 3875 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:387 > 4:37 > │ | > │ 3874 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 3874 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 3874 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:387 > 4:45 > │ | > │ 3874 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 3874 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 3874 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:387 > 4:74 > │ | > │ 3874 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 3874 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 3874 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\file_system.rs:387 > 4:53 > │ | > │ 3874 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 3874 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 3874 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:94:70 > │ | > │ 94 | (Sm::method0(v0_1, v1_1.clone(), (v2_1) > + 1_i32))(append((v3_1), (v1_1))) > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 94 - (Sm::method0(v0_1, v1_1.clone(), (v2_1) > + 1_i32))(append((v3_1), (v1_1))) > │ 94 + (Sm::method0(v0_1, v1_1.clone(), (v2_1) > + 1_i32))(append(v3_1, (v1_1))) > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:94:78 > │ | > │ 94 | (Sm::method0(v0_1, v1_1.clone(), (v2_1) > + 1_i32))(append((v3_1), (v1_1))) > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 94 - (Sm::method0(v0_1, v1_1.clone(), (v2_1) > + 1_i32))(append((v3_1), (v1_1))) > │ 94 + (Sm::method0(v0_1, v1_1.clone(), (v2_1) > + 1_i32))(append((v3_1), v1_1)) > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:108:13 > │ | > │ 108 | ((Sm::method0((v0_1) - > (length(v2_1.clone())), v5_1, 0_i32))(string(""))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 108 - ((Sm::method0((v0_1) - > (length(v2_1.clone())), v5_1, 0_i32))(string(""))), > │ 108 + (Sm::method0((v0_1) - > (length(v2_1.clone())), v5_1, 0_i32))(string("")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:109:13 > │ | > │ 109 | (v2_1), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 109 - (v2_1), > │ 109 + v2_1, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:128:13 > │ | > │ 128 | (v2_1.clone()), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 128 - (v2_1.clone()), > │ 128 + v2_1.clone(), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:129:13 > │ | > │ 129 | ((Sm::method0((v0_1) - (length(v2_1)), > v5_1, 0_i32))(string(""))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 129 - ((Sm::method0((v0_1) - (length(v2_1)), > v5_1, 0_i32))(string(""))), > │ 129 + (Sm::method0((v0_1) - (length(v2_1)), > v5_1, 0_i32))(string("")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:345:17 > │ | > │ 345 | (getSlice(v1_1, Some(0_i32), > Some((v0_1) - 1_i32))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 345 - (getSlice(v1_1, Some(0_i32), > Some((v0_1) - 1_i32))), > │ 345 + getSlice(v1_1, Some(0_i32), > Some((v0_1) - 1_i32)), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:24 > │ | > │ 410 | > append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)); > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 410 - > append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)); > │ 410 + > append(append((v1_1[v9_1].clone()), (matchValue_1)), (matchValue)); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:72 > │ | > │ 410 | > append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)); > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 410 - > append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)); > │ 410 + > append((append((v1_1[v9_1].clone()), (matchValue_1))), matchValue); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:32 > │ | > │ 410 | > append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)); > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 410 - > append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)); > │ 410 + append((append(v1_1[v9_1].clone(), > (matchValue_1))), (matchValue)); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\sm.rs:410:54 > │ | > │ 410 | > append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)); > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 410 - > append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)); > │ 410 + > append((append((v1_1[v9_1].clone()), matchValue_1)), (matchValue)); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:759:33 > │ | > │ 759 | let v4: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 759 - let v4: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ 759 + let v4: string = > append(v0_1.l0.get().clone(), (v1_1)); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:759:58 > │ | > │ 759 | let v4: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 759 - let v4: string = > append((v0_1.l0.get().clone()), (v1_1)); > │ 759 + let v4: string = > append((v0_1.l0.get().clone()), v1_1); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:858:13 > │ | > │ 858 | (append( > │ | ^ > │ ... > │ 870 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 858 ~ append( > │ 859 | (append( > │ ... > │ 869 | string(" / "), > │ 870 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:871:13 > │ | > │ 871 | (v254), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 871 - (v254), > │ 871 + v254, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:859:17 > │ | > │ 859 | (append( > │ | ^ > │ ... > │ 868 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 859 ~ append( > │ 860 | (append( > │ ... > │ 867 | > string("crypto.hash_to_port"), > │ 868 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:860:21 > │ | > │ 860 | (append( > │ | ^ > │ ... > │ 866 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 860 ~ append( > │ 861 | (append( > │ ... > │ 865 | string(" "), > │ 866 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:861:25 > │ | > │ 861 | (append( > │ | ^ > │ ... > │ 864 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 861 ~ append( > │ 862 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 863 | > (toString(v0_1.l0.get().clone())), > │ 864 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:862:29 > │ | > │ 862 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 862 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 862 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:863:29 > │ | > │ 863 | ... > (toString(v0_1.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 863 - > (toString(v0_1.l0.get().clone())), > │ 863 + > toString(v0_1.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:862:37 > │ | > │ 862 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 862 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 862 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:862:45 > │ | > │ 862 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 862 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 862 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:862:74 > │ | > │ 862 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 862 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 862 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\crypto.rs:862:53 > │ | > │ 862 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 862 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 862 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:690:33 > │ | > │ 690 | let v4: string = > append((v0.l0.get().clone()), (v1)); > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 690 - let v4: string = > append((v0.l0.get().clone()), (v1)); > │ 690 + let v4: string = > append(v0.l0.get().clone(), (v1)); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:690:56 > │ | > │ 690 | let v4: string = > append((v0.l0.get().clone()), (v1)); > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 690 - let v4: string = > append((v0.l0.get().clone()), (v1)); > │ 690 + let v4: string = > append((v0.l0.get().clone()), v1); > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:777:13 > │ | > │ 777 | (append( > │ | ^ > │ ... > │ 789 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 777 ~ append( > │ 778 | (append( > │ ... > │ 788 | string(" / "), > │ 789 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:790:13 > │ | > │ 790 | (v219), > │ | ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 790 - (v219), > │ 790 + v219, > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:778:17 > │ | > │ 778 | (append( > │ | ^ > │ ... > │ 787 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 778 ~ append( > │ 779 | (append( > │ ... > │ 786 | string("common.retry_fn"), > │ 787 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:779:21 > │ | > │ 779 | (append( > │ | ^ > │ ... > │ 785 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 779 ~ append( > │ 780 | (append( > │ ... > │ 784 | string(" "), > │ 785 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:780:25 > │ | > │ 780 | (append( > │ | ^ > │ ... > │ 783 | )), > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 780 ~ append( > │ 781 | > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 782 | > (toString(v0.l0.get().clone())), > │ 783 ~ ), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:781:29 > │ | > │ 781 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 781 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 781 + > append((append((append((v6), string(" "))), (v7))), string(" #")), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:782:29 > │ | > │ 782 | ... > (toString(v0.l0.get().clone())), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 782 - > (toString(v0.l0.get().clone())), > │ 782 + > toString(v0.l0.get().clone()), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:781:37 > │ | > │ 781 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 781 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 781 + > (append(append((append((v6), string(" "))), (v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:781:45 > │ | > │ 781 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 781 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 781 + > (append((append(append((v6), string(" ")), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:781:74 > │ | > │ 781 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | > ^ ^ > │ | > │ help: remove these parentheses > │ | > │ 781 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 781 + > (append((append((append((v6), string(" "))), v7)), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around function > argument > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:781:53 > │ | > │ 781 | ... > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ | ^ > ^ > │ | > │ help: remove these parentheses > │ | > │ 781 - > (append((append((append((v6), string(" "))), (v7))), string(" #"))), > │ 781 + > (append((append((append(v6, string(" "))), (v7))), string(" #"))), > │ | > │ > │ warning: unnecessary parentheses around `break` value > │ --> > C:\home\git\polyglot\apps\plot\..\..\deps\spiral\lib\spiral\.\common.rs:874:29 > │ | > │ 874 | break '_method8 ({ > │ | ^ > │ ... > │ 911 | }); > │ | ^ > │ | > │ help: remove these parentheses > │ | > │ 874 ~ break '_method8 { > │ 875 | let result: > LrcPtr<MutCell<Common::US7>> = refCell(Common::US7::US7_1); > │ ... > │ 910 | } > │ 911 ~ }; > │ | > │ > │ warning: `plot` (lib) generated 379 warnings (run `cargo > fix --lib -p plot` to apply 379 suggestions) > │ Finished `release` profile [optimized] target(s) in > 25.77s > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../apps/perf/build.ps1 } | Invoke-Block > > ── [ 1.38m - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "Perf.dib", "--retries", "3"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/apps/perf/Perf.dib", "--output-path", > "c:/home/git/polyglot/apps/perf/Perf.dib.ipynb"]; options = { command = dotnet > repl --exit-after-run --run "c:/home/git/polyglot/apps/perf/Perf.dib" > --output-path "c:/home/git/polyglot/apps/perf/Perf.dib.ipynb"; > cancellation_token = None; environment_variables = > Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = > None; stdin = None; trace = false; working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # Perf (Polyglot) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > open testing > │ > open benchmark > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #if !INTERACTIVE > │ > open Lib > │ > #endif > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## TestCaseResult > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type TestCaseResult = > │ > { > │ > Input: string > │ > Expected: string > │ > Result: string > │ > TimeList: int64 list > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## run > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let run count (solutions: (string * ('TInput -> > 'TExpected)) list) (input, > │ > expected) = > │ > let inputStr = > │ > match box input with > │ > | :? System.Collections.ICollection as input -> > │ > System.Linq.Enumerable.Cast<obj> input > │ > |> Seq.map string > │ > |> SpiralSm.concat "," > │ > | _ -> input.ToString () > │ > > │ > printfn "" > │ > printfn $"Solution: {inputStr} " > │ > > │ > let performanceInvoke (fn: unit -> 'T) = > │ > GC.Collect () > │ > let stopwatch = System.Diagnostics.Stopwatch () > │ > stopwatch.Start () > │ > let time1 = stopwatch.ElapsedMilliseconds > │ > > │ > let result = > │ > [[| 0 .. count |]] > │ > |> Array.Parallel.map (fun _ -> > │ > fn () > │ > ) > │ > |> Array.last > │ > > │ > let time2 = stopwatch.ElapsedMilliseconds - time1 > │ > > │ > result, time2 > │ > > │ > let resultsWithTime = > │ > solutions > │ > |> List.mapi (fun i (testName, solution) -> > │ > let result, time = performanceInvoke (fun () -> > solution input) > │ > printfn $"Test case %d{i + 1}. %s{testName}. > Time: %A{time} " > │ > result, time > │ > ) > │ > > │ > > │ > match resultsWithTime |> List.map fst with > │ > | ([[]] | [[ _ ]]) -> () > │ > | (head :: tail) when tail |> List.forall ((=) head) -> > () > │ > | results -> failwithf $"Challenge error: %A{results}" > │ > > │ > { > │ > Input = inputStr > │ > Expected = expected.ToString () > │ > Result = resultsWithTime |> Seq.map fst |> Seq.head > |> _.ToString() > │ > TimeList = resultsWithTime |> List.map snd > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## runAll > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let runAll testName count (solutions: (string * ('TInput -> > 'TExpected)) list) > │ > testCases = > │ > printfn "" > │ > printfn "" > │ > printfn $"Test: {testName}" > │ > testCases > │ > |> Seq.map (run count solutions) > │ > |> Seq.toList > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## sortResultList > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let sortResultList resultList = > │ > let table = > │ > let rows = > │ > resultList > │ > |> List.map (fun result -> > │ > let best = > │ > result.TimeList > │ > |> List.mapi (fun i time -> > │ > i + 1, time > │ > ) > │ > |> List.sortBy snd > │ > |> List.head > │ > |> _.ToString() > │ > let row = > │ > [[ > │ > result.Input > │ > result.Expected > │ > result.Result > │ > best > │ > ]] > │ > let color = > │ > match result.Expected = result.Result > with > │ > | true -> Some ConsoleColor.DarkGreen > │ > | false -> Some ConsoleColor.DarkRed > │ > row, color > │ > ) > │ > let header = > │ > [[ > │ > [[ > │ > "Input" > │ > "Expected" > │ > "Result" > │ > "Best" > │ > ]] > │ > [[ > │ > "---" > │ > "---" > │ > "---" > │ > "---" > │ > ]] > │ > ]] > │ > |> List.map (fun row -> row, None) > │ > header @ rows > │ > > │ > let formattedTable = > │ > let lengthMap = > │ > table > │ > |> List.map fst > │ > |> List.transpose > │ > |> List.map (fun column -> > │ > column > │ > |> List.map String.length > │ > |> List.sortDescending > │ > |> List.tryHead > │ > |> Option.defaultValue 0 > │ > ) > │ > |> List.indexed > │ > |> Map.ofList > │ > table > │ > |> List.map (fun (row, color) -> > │ > let newRow = > │ > row > │ > |> List.mapi (fun i cell -> > │ > cell.PadRight lengthMap.[[i]] > │ > ) > │ > newRow, color > │ > ) > │ > > │ > printfn "" > │ > formattedTable > │ > |> List.iter (fun (row, color) -> > │ > match color with > │ > | Some color -> Console.ForegroundColor <- color > │ > | None -> Console.ResetColor () > │ > > │ > printfn "%s" (String.Join ("\t| ", row)) > │ > > │ > Console.ResetColor () > │ > ) > │ > > │ > let averages = > │ > resultList > │ > |> List.map (fun result -> result.TimeList |> > List.map float) > │ > |> List.transpose > │ > |> List.map List.average > │ > |> List.map int64 > │ > |> List.indexed > │ > > │ > printfn "" > │ > printfn "Average Ranking " > │ > averages > │ > |> List.sortBy snd > │ > |> List.iter (fun (i, avg) -> > │ > printfn $"Test case %d{i + 1}. Average Time: > %A{avg} " > │ > ) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let mutable _count = > │ > if ("CI" |> System.Environment.GetEnvironmentVariable > |> fun x -> $"%A{x}") > │ > <> "<null>" > │ > then 2000000 > │ > else 2000 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl is_fast () = > │ > false > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## empty3Tests > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ Test: Empty3 > │ > │ > │ > │ Solution: (a, a) > │ > │ Test case 1. A. Time: 91L > │ > │ > │ > │ Solution: (a, a) > │ > │ Test case 1. A. Time: 56L > │ > │ > │ > │ Input | Expected | Result | Best > │ > │ --- | --- | --- | --- > │ > │ (a, a) | a | a | (1, > 91) > │ > │ (a, a) | a | a | (1, > 56) > │ > │ > │ > │ Averages > │ > │ Test case 1. Average Time: 73L > │ > │ > │ > │ Ranking > │ > │ Test case 1. Average Time: 73L > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let solutions = [[ > │ > "A", > │ > fun (a, _b) -> > │ > a > │ > ]] > │ > let testCases = seq { > │ > ("a", "a"), "a" > │ > ("a", "a"), "a" > │ > } > │ > let rec empty3Tests = runAll (nameof empty3Tests) _count > solutions testCases > │ > empty3Tests > │ > |> sortResultList > │ > > │ > ── [ 381.73ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ > │ > │ > │ > │ Test: empty3Tests > │ > │ > │ > │ Solution: (a, a) > │ > │ Test case 1. A. Time: 1L > │ > │ > │ > │ Solution: (a, a) > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Input | Expected | Result | Best > │ > │ --- | --- | --- | --- > │ > │ (a, a) | a | a | (1, 1) > │ > │ (a, a) | a | a | (1, 0) > │ > │ > │ > │ Average Ranking > │ > │ Test case 1. Average Time: 0L > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## empty2Tests > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ Test: Empty2 > │ > │ > │ > │ Solution: (a, a) > │ > │ Test case 1. A. Time: 59L > │ > │ > │ > │ Solution: (a, a) > │ > │ Test case 1. A. Time: 53L > │ > │ > │ > │ Input | Expected | Result | > Best > │ > │ --- | --- | --- | > --- > │ > │ (a, a) | a | a | > (1, 59) > │ > │ (a, a) | a | a | > (1, 53) > │ > │ > │ > │ Averages > │ > │ Test case 1. Average Time: 56L > │ > │ > │ > │ Ranking > │ > │ Test case 1. Average Time: 56L > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let solutions = [[ > │ > "A", > │ > fun (a, _b) -> > │ > a > │ > ]] > │ > let testCases = seq { > │ > ("a", "a"), "a" > │ > ("a", "a"), "a" > │ > } > │ > let rec empty2Tests = runAll (nameof empty2Tests) _count > solutions testCases > │ > empty2Tests > │ > |> sortResultList > │ > > │ > ── [ 278.71ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ > │ > │ > │ > │ Test: empty2Tests > │ > │ > │ > │ Solution: (a, a) > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Solution: (a, a) > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Input | Expected | Result | Best > │ > │ --- | --- | --- | --- > │ > │ (a, a) | a | a | (1, 0) > │ > │ (a, a) | a | a | (1, 0) > │ > │ > │ > │ Average Ranking > │ > │ Test case 1. Average Time: 0L > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## emptyTests > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ Test: Empty > │ > │ > │ > │ Solution: 0 > │ > │ Test case 1. A. Time: 61L > │ > │ > │ > │ Solution: 2 > │ > │ Test case 1. A. Time: 62L > │ > │ > │ > │ Solution: 5 > │ > │ Test case 1. A. Time: 70L > │ > │ > │ > │ Input | Expected | Result | > Best > │ > │ --- | --- | --- | > --- > │ > │ 0 | 0 | 0 | > (1, 61) > │ > │ 2 | 2 | 2 | > (1, 62) > │ > │ 5 | 5 | 5 | > (1, 70) > │ > │ > │ > │ Averages > │ > │ Test case 1. Average Time: 64L > │ > │ > │ > │ Ranking > │ > │ Test case 1. Average Time: 64L > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let solutions = [[ > │ > "A", > │ > fun n -> > │ > n + 0 > │ > ]] > │ > let testCases = seq { > │ > 0, 0 > │ > 2, 2 > │ > 5, 5 > │ > } > │ > let rec emptyTests = runAll (nameof emptyTests) _count > solutions testCases > │ > emptyTests > │ > |> sortResultList > │ > > │ > ── [ 445.01ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ > │ > │ > │ > │ Test: emptyTests > │ > │ > │ > │ Solution: 0 > │ > │ Test case 1. A. Time: 1L > │ > │ > │ > │ Solution: 2 > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Solution: 5 > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Input | Expected | Result | Best > │ > │ --- | --- | --- | --- > │ > │ 0 | 0 | 0 | (1, 1) > │ > │ 2 | 2 | 2 | (1, 0) > │ > │ 5 | 5 | 5 | (1, 0) > │ > │ > │ > │ Average Ranking > │ > │ Test case 1. Average Time: 0L > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## uniqueLettersTests > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ Test: UniqueLetters > │ > │ > │ > │ Solution: abc > │ > │ Test case 1. A. Time: 1512L > │ > │ Test case 2. B. Time: 1947L > │ > │ Test case 3. C. Time: 2023L > │ > │ Test case 4. D. Time: 1358L > │ > │ Test case 5. E. Time: 1321L > │ > │ Test case 6. F. Time: 1346L > │ > │ Test case 7. G. Time: 1304L > │ > │ Test case 8. H. Time: 1383L > │ > │ Test case 9. I. Time: 1495L > │ > │ Test case 10. J. Time: 1245L > │ > │ Test case 11. K. Time: 1219L > │ > │ > │ > │ Solution: accabb > │ > │ Test case 1. A. Time: 1648L > │ > │ Test case 2. B. Time: 2061L > │ > │ Test case 3. C. Time: 2413L > │ > │ Test case 4. D. Time: 1561L > │ > │ Test case 5. E. Time: 1593L > │ > │ Test case 6. F. Time: 1518L > │ > │ Test case 7. G. Time: 1415L > │ > │ Test case 8. H. Time: 1510L > │ > │ Test case 9. I. Time: 1445L > │ > │ Test case 10. J. Time: 1636L > │ > │ Test case 11. K. Time: 1317L > │ > │ > │ > │ Solution: pprrqqpp > │ > │ Test case 1. A. Time: 2255L > │ > │ Test case 2. B. Time: 2408L > │ > │ Test case 3. C. Time: 2393L > │ > │ Test case 4. D. Time: 1675L > │ > │ Test case 5. E. Time: 1911L > │ > │ Test case 6. F. Time: 2126L > │ > │ Test case 7. G. Time: 1504L > │ > │ Test case 8. H. Time: 1715L > │ > │ Test case 9. I. Time: 1537L > │ > │ Test case 10. J. Time: 1522L > │ > │ Test case 11. K. Time: 1322L > │ > │ > │ > │ Solution: > │ > > aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb > │ > │ Test case 1. A. Time: 13073L > │ > │ Test case 2. B. Time: 11519L > │ > │ Test case 3. C. Time: 8373L > │ > │ Test case 4. D. Time: 5860L > │ > │ Test case 5. E. Time: 6490L > │ > │ Test case 6. F. Time: 6325L > │ > │ Test case 7. G. Time: 5799L > │ > │ Test case 8. H. Time: 7099L > │ > │ Test case 9. I. Time: 6133L > │ > │ Test case 10. J. Time: 5993L > │ > │ Test case 11. K. Time: 2040L > │ > │ > │ > │ Input > │ > | Expected | Result | Best > │ > │ --- > │ > | --- | --- | --- > │ > │ abc > │ > | abc | abc | (11, 1219) > │ > │ accabb > │ > | acb | acb | (11, 1317) > │ > │ pprrqqpp > │ > | prq | prq | (11, 1322) > │ > │ > │ > > aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb > │ > | acb | acb | (11, 2040) > │ > │ > │ > │ Averages > │ > │ Test case 1. Average Time: 4622L > │ > │ Test case 2. Average Time: 4483L > │ > │ Test case 3. Average Time: 3800L > │ > │ Test case 4. Average Time: 2613L > │ > │ Test case 5. Average Time: 2828L > │ > │ Test case 6. Average Time: 2828L > │ > │ Test case 7. Average Time: 2505L > │ > │ Test case 8. Average Time: 2926L > │ > │ Test case 9. Average Time: 2652L > │ > │ Test case 10. Average Time: 2599L > │ > │ Test case 11. Average Time: 1474L > │ > │ > │ > │ Ranking > │ > │ Test case 1. Average Time: 4622L > │ > │ Test case 2. Average Time: 4483L > │ > │ Test case 3. Average Time: 3800L > │ > │ Test case 8. Average Time: 2926L > │ > │ Test case 5. Average Time: 2828L > │ > │ Test case 6. Average Time: 2828L > │ > │ Test case 9. Average Time: 2652L > │ > │ Test case 4. Average Time: 2613L > │ > │ Test case 10. Average Time: 2599L > │ > │ Test case 7. Average Time: 2505L > │ > │ Test case 11. Average Time: 1474L > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let solutions = [[ > │ > "A", > │ > fun input -> > │ > input > │ > |> Seq.toList > │ > |> List.fold (fun acc x -> if List.contains x acc > then acc else acc @ [[ > │ > x ]]) [[]] > │ > |> Seq.toArray > │ > |> String > │ > > │ > "B", > │ > fun input -> > │ > input > │ > |> Seq.rev > │ > |> fun list -> Seq.foldBack (fun x acc -> if > List.contains x acc then > │ > acc else x :: acc) list [[]] > │ > |> Seq.rev > │ > |> Seq.toArray > │ > |> String > │ > > │ > "C", > │ > fun input -> > │ > input > │ > |> Seq.rev > │ > |> fun list -> Seq.foldBack (fun x (set, acc) -> if > Set.contains x set > │ > then set, acc else set.Add x, x :: acc) list (Set.empty, > [[]]) > │ > |> snd > │ > |> Seq.rev > │ > |> Seq.toArray > │ > |> String > │ > > │ > "D", > │ > fun input -> > │ > input > │ > |> Seq.fold (fun (set, acc) x -> if Set.contains x > set then set, acc > │ > else set.Add x, Array.append acc [[| x |]]) (Set.empty, > [[||]]) > │ > |> snd > │ > |> String > │ > > │ > "E", > │ > fun input -> > │ > input > │ > |> Seq.fold (fun (set, acc) x -> if Set.contains x > set then set, acc > │ > else set.Add x, x :: acc) (Set.empty, [[]]) > │ > |> snd > │ > |> List.rev > │ > |> List.toArray > │ > |> String > │ > > │ > "F", > │ > fun input -> > │ > input > │ > |> Seq.fold (fun (set, acc) x -> if Set.contains x > set then set, acc > │ > else set.Add x, acc @ [[ x ]]) (Set.empty, [[]]) > │ > |> snd > │ > |> List.toArray > │ > |> String > │ > > │ > "G", > │ > fun input -> > │ > input > │ > |> Seq.fold (fun (set, acc) x -> if Set.contains x > set then set, acc > │ > else set.Add x, x :: acc) (Set.empty, [[]]) > │ > |> snd > │ > |> List.toArray > │ > |> Array.rev > │ > |> String > │ > > │ > "H", > │ > fun input -> > │ > input > │ > |> Seq.toList > │ > |> fun list -> > │ > let rec loop set = function > │ > | head :: tail when Set.contains head set > -> loop set tail > │ > | head :: tail -> (loop (set.Add head) > tail) @ [[ head ]] > │ > | [[]] -> [[]] > │ > loop Set.empty list > │ > |> List.rev > │ > |> List.toArray > │ > |> String > │ > > │ > "I", > │ > fun input -> > │ > input > │ > |> Seq.toList > │ > |> fun list -> > │ > let rec loop set = function > │ > | head :: tail when Set.contains head set > -> loop set tail > │ > | head :: tail -> loop (set.Add head) tail > |> Array.append [[| > │ > head |]] > │ > | [[]] -> [[||]] > │ > loop Set.empty list > │ > |> String > │ > > │ > "J", > │ > fun input -> > │ > input > │ > |> Seq.toList > │ > |> fun list -> > │ > let rec loop set = function > │ > | head :: tail when Set.contains head set > -> loop set tail > │ > | head :: tail -> head :: loop (set.Add > head) tail > │ > | [[]] -> [[]] > │ > loop Set.empty list > │ > |> List.toArray > │ > |> String > │ > > │ > "K", > │ > fun input -> > │ > input > │ > |> Seq.distinct > │ > |> Seq.toArray > │ > |> String > │ > ]] > │ > let testCases = seq { > │ > "abc", "abc" > │ > "accabb", "acb" > │ > "pprrqqpp", "prq" > │ > > │ > > "aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb > │ > ", "acb" > │ > } > │ > let rec uniqueLettersTests = runAll (nameof > uniqueLettersTests) _count solutions > │ > testCases > │ > uniqueLettersTests > │ > |> sortResultList > │ > > │ > ── [ 6.01s - stdout ] > ────────────────────────────────────────────────────────── > │ > │ > │ > │ > │ > │ Test: uniqueLettersTests > │ > │ > │ > │ Solution: abc > │ > │ Test case 1. A. Time: 2L > │ > │ Test case 2. B. Time: 3L > │ > │ Test case 3. C. Time: 5L > │ > │ Test case 4. D. Time: 1L > │ > │ Test case 5. E. Time: 1L > │ > │ Test case 6. F. Time: 1L > │ > │ Test case 7. G. Time: 1L > │ > │ Test case 8. H. Time: 1L > │ > │ Test case 9. I. Time: 1L > │ > │ Test case 10. J. Time: 1L > │ > │ Test case 11. K. Time: 2L > │ > │ > │ > │ Solution: accabb > │ > │ Test case 1. A. Time: 1L > │ > │ Test case 2. B. Time: 1L > │ > │ Test case 3. C. Time: 1L > │ > │ Test case 4. D. Time: 0L > │ > │ Test case 5. E. Time: 0L > │ > │ Test case 6. F. Time: 1L > │ > │ Test case 7. G. Time: 0L > │ > │ Test case 8. H. Time: 0L > │ > │ Test case 9. I. Time: 0L > │ > │ Test case 10. J. Time: 0L > │ > │ Test case 11. K. Time: 0L > │ > │ > │ > │ Solution: pprrqqpp > │ > │ Test case 1. A. Time: 0L > │ > │ Test case 2. B. Time: 1L > │ > │ Test case 3. C. Time: 2L > │ > │ Test case 4. D. Time: 0L > │ > │ Test case 5. E. Time: 0L > │ > │ Test case 6. F. Time: 0L > │ > │ Test case 7. G. Time: 0L > │ > │ Test case 8. H. Time: 0L > │ > │ Test case 9. I. Time: 0L > │ > │ Test case 10. J. Time: 0L > │ > │ Test case 11. K. Time: 0L > │ > │ > │ > │ Solution: > │ > > aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb[3 > 8;2;38;140;38m│ Test case 1. A. Time: 4L > │ > │ Test case 2. B. Time: 6L > │ > │ Test case 3. C. Time: 7L > │ > │ Test case 4. D. Time: 4L > │ > │ Test case 5. E. Time: 4L > │ > │ Test case 6. F. Time: 5L > │ > │ Test case 7. G. Time: 4L > │ > │ Test case 8. H. Time: 3L > │ > │ Test case 9. I. Time: 3L > │ > │ Test case 10. J. Time: 4L > │ > │ Test case 11. K. Time: 3L > │ > │ > │ > │ Input > │ > | Expected | Result | Best > │ > │ --- > │ > | --- | --- | --- > │ > │ abc > │ > | abc | abc | (4, 1) > │ > │ accabb > │ > | acb | acb | (4, 0) > │ > │ pprrqqpp > │ > | prq | prq | (1, 0) > │ > │ > │ > > aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb | > │ > acb | acb | (8, 3) > │ > │ > │ > │ Average Ranking > │ > │ Test case 1. Average Time: 1L > │ > │ Test case 4. Average Time: 1L > │ > │ Test case 5. Average Time: 1L > │ > │ Test case 6. Average Time: 1L > │ > │ Test case 7. Average Time: 1L > │ > │ Test case 8. Average Time: 1L > │ > │ Test case 9. Average Time: 1L > │ > │ Test case 10. Average Time: 1L > │ > │ Test case 11. Average Time: 1L > │ > │ Test case 2. Average Time: 2L > │ > │ Test case 3. Average Time: 3L > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## rotateStringsTests > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ > https://www.hackerrank.com/challenges/rotate-string/forum > │ > │ > │ > │ Test: RotateStrings > │ > │ > │ > │ Solution: abc > │ > │ Test case 1. A. Time: 1842L > │ > │ Test case 2. B. Time: 1846L > │ > │ Test case 3. C. Time: 1936L > │ > │ Test case 4. CA. Time: 2224L > │ > │ Test case 5. CB. Time: 2329L > │ > │ Test case 6. D. Time: 2474L > │ > │ Test case 7. E. Time: 1664L > │ > │ Test case 8. F. Time: 1517L > │ > │ Test case 9. FA. Time: 1651L > │ > │ Test case 10. FB. Time: 3764L > │ > │ Test case 11. FC. Time: 5415L > │ > │ > │ > │ Solution: abcde > │ > │ Test case 1. A. Time: 3356L > │ > │ Test case 2. B. Time: 2592L > │ > │ Test case 3. C. Time: 2346L > │ > │ Test case 4. CA. Time: 2997L > │ > │ Test case 5. CB. Time: 3061L > │ > │ Test case 6. D. Time: 4051L > │ > │ Test case 7. E. Time: 1905L > │ > │ Test case 8. F. Time: 1771L > │ > │ Test case 9. FA. Time: 2175L > │ > │ Test case 10. FB. Time: 3275L > │ > │ Test case 11. FC. Time: 5266L > │ > │ > │ > │ Solution: abcdefghi > │ > │ Test case 1. A. Time: 4492L > │ > │ Test case 2. B. Time: 3526L > │ > │ Test case 3. C. Time: 3583L > │ > │ Test case 4. CA. Time: 3711L > │ > │ Test case 5. CB. Time: 4783L > │ > │ Test case 6. D. Time: 7557L > │ > │ Test case 7. E. Time: 3452L > │ > │ Test case 8. F. Time: 3050L > │ > │ Test case 9. FA. Time: 3275L > │ > │ Test case 10. FB. Time: 4635L > │ > │ Test case 11. FC. Time: 5616L > │ > │ > │ > │ Solution: abab > │ > │ Test case 1. A. Time: 2093L > │ > │ Test case 2. B. Time: 1843L > │ > │ Test case 3. C. Time: 1746L > │ > │ Test case 4. CA. Time: 2085L > │ > │ Test case 5. CB. Time: 2139L > │ > │ Test case 6. D. Time: 2095L > │ > │ Test case 7. E. Time: 1723L > │ > │ Test case 8. F. Time: 1558L > │ > │ Test case 9. FA. Time: 1620L > │ > │ Test case 10. FB. Time: 2319L > │ > │ Test case 11. FC. Time: 3918L > │ > │ > │ > │ Solution: aa > │ > │ Test case 1. A. Time: 1107L > │ > │ Test case 2. B. Time: 1241L > │ > │ Test case 3. C. Time: 1183L > │ > │ Test case 4. CA. Time: 1563L > │ > │ Test case 5. CB. Time: 1525L > │ > │ Test case 6. D. Time: 1591L > │ > │ Test case 7. E. Time: 1327L > │ > │ Test case 8. F. Time: 1151L > │ > │ Test case 9. FA. Time: 1180L > │ > │ Test case 10. FB. Time: 1733L > │ > │ Test case 11. FC. Time: 2817L > │ > │ > │ > │ Solution: z > │ > │ Test case 1. A. Time: 816L > │ > │ Test case 2. B. Time: 745L > │ > │ Test case 3. C. Time: 928L > │ > │ Test case 4. CA. Time: 1375L > │ > │ Test case 5. CB. Time: 1029L > │ > │ Test case 6. D. Time: 852L > │ > │ Test case 7. E. Time: 712L > │ > │ Test case 8. F. Time: 263L > │ > │ Test case 9. FA. Time: 232L > │ > │ Test case 10. FB. Time: 773L > │ > │ Test case 11. FC. Time: 1789L > │ > │ > │ > │ Input | Expected > │ > > │ > | Result > │ > > │ > | Best > │ > │ --- | --- > │ > > │ > | --- > │ > > │ > | --- > │ > │ abc | bca cab abc > │ > > │ > | bca cab abc > │ > > │ > | (8, 1517) > │ > │ abcde | bcdea cdeab deabc > eabcd abcde > │ > | bcdea cdeab deabc eabcd abcde > │ > | (8, 1771) > │ > │ abcdefghi | bcdefghia cdefghiab > defghiabc efghiabcd > │ > fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi | > bcdefghia cdefghiab > │ > defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh > abcdefghi | > │ > (8, 3050) > │ > │ abab | baba abab baba abab > │ > | baba abab baba abab > │ > | (8, 1558) > │ > │ aa | aa aa > │ > > │ > | aa aa > │ > > │ > | (1, 1107) > │ > │ z | z > │ > > │ > | z > │ > > │ > | (9, 232) > │ > │ > │ > │ Averages > │ > │ Test case 1. Average Time: 2284L > │ > │ Test case 2. Average Time: 1965L > │ > │ Test case 3. Average Time: 1953L > │ > │ Test case 4. Average Time: 2325L > │ > │ Test case 5. Average Time: 2477L > │ > │ Test case 6. Average Time: 3103L > │ > │ Test case 7. Average Time: 1797L > │ > │ Test case 8. Average Time: 1551L > │ > │ Test case 9. Average Time: 1688L > │ > │ Test case 10. Average Time: 2749L > │ > │ Test case 11. Average Time: 4136L > │ > │ > │ > │ Ranking > │ > │ Test case 11. Average Time: 4136L > │ > │ Test case 6. Average Time: 3103L > │ > │ Test case 10. Average Time: 2749L > │ > │ Test case 5. Average Time: 2477L > │ > │ Test case 4. Average Time: 2325L > │ > │ Test case 1. Average Time: 2284L > │ > │ Test case 2. Average Time: 1965L > │ > │ Test case 3. Average Time: 1953L > │ > │ Test case 7. Average Time: 1797L > │ > │ Test case 9. Average Time: 1688L > │ > │ Test case 8. Average Time: 1551L > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let solutions = [[ > │ > "A", > │ > fun (input: string) -> > │ > let resultList = > │ > List.fold (fun acc x -> > │ > let rotate (text: string) (letter: string) > = (text |> > │ > SpiralSm.slice 1 (input.Length - 1)) + letter > │ > [[ rotate (if acc.IsEmpty then input else > acc.Head) (string x) > │ > ]] @ acc > │ > ) [[]] (Seq.toList input) > │ > > │ > (resultList, "") > │ > ||> List.foldBack (fun acc x -> x + acc + " ") > │ > |> _.TrimEnd() > │ > > │ > "B", > │ > fun input -> > │ > input > │ > |> Seq.toList > │ > |> List.fold (fun (acc: string list) letter -> > │ > let last = > │ > if acc.IsEmpty > │ > then input > │ > else acc.Head > │ > > │ > let item = last.[[1 .. input.Length - 1]] + > string letter > │ > > │ > item :: acc > │ > ) [[]] > │ > |> List.rev > │ > |> SpiralSm.concat " " > │ > > │ > "C", > │ > fun input -> > │ > input > │ > |> Seq.toList > │ > |> List.fold (fun (acc: string list) letter -> > acc.Head.[[ 1 .. > │ > input.Length - 1 ]] + string letter :: acc) [[ input ]] > │ > |> List.rev > │ > |> List.skip 1 > │ > |> SpiralSm.concat " " > │ > > │ > "CA", > │ > fun input -> > │ > input > │ > |> Seq.fold (fun (acc: string list) letter -> > acc.Head.[[ 1 .. > │ > input.Length - 1 ]] + string letter :: acc) [[ input ]] > │ > |> Seq.rev > │ > |> Seq.skip 1 > │ > |> SpiralSm.concat " " > │ > > │ > "CB", > │ > fun input -> > │ > input > │ > |> Seq.toArray > │ > |> Array.fold (fun (acc: string[[]]) letter -> acc > |> Array.append [[| > │ > acc.[[0]].[[ 1 .. input.Length - 1 ]] + string letter |]]) > [[| input |]] > │ > |> Array.rev > │ > |> Array.skip 1 > │ > |> SpiralSm.concat " " > │ > > │ > "D", > │ > fun input -> > │ > input > │ > |> Seq.toList > │ > |> fun list -> > │ > let rec loop (acc: char list list) = function > │ > | _ when acc.Length = list.Length -> acc > │ > | head :: tail -> > │ > let item = tail @ [[ head ]] > │ > loop (item :: acc) item > │ > | [[]] -> [[]] > │ > loop [[]] list > │ > |> List.rev > │ > |> List.map (List.toArray >> String) > │ > |> SpiralSm.concat " " > │ > > │ > "E", > │ > fun input -> > │ > input > │ > |> Seq.toList > │ > |> fun list -> > │ > let rec loop (last: string) = function > │ > | head :: tail -> > │ > let item = last.[[1 .. input.Length - > 1]] + string head > │ > item :: loop item tail > │ > | [[]] -> [[]] > │ > loop input list > │ > |> SpiralSm.concat " " > │ > > │ > "F", > │ > fun input -> > │ > Array.singleton 0 > │ > |> Array.append [[| 1 .. input.Length - 1 |]] > │ > |> Array.map (fun i -> input.[[ i .. ]] + input.[[ > .. i - 1 ]]) > │ > |> SpiralSm.concat " " > │ > > │ > "FA", > │ > fun input -> > │ > List.singleton 0 > │ > |> List.append [[ 1 .. input.Length - 1 ]] > │ > |> List.map (fun i -> input.[[ i .. ]] + input.[[ > .. i - 1 ]]) > │ > |> SpiralSm.concat " " > │ > > │ > "FB", > │ > fun input -> > │ > Seq.singleton 0 > │ > |> Seq.append (seq { 1 .. input.Length - 1 }) > │ > |> Seq.map (fun i -> input.[[ i .. ]] + input.[[ .. > i - 1 ]]) > │ > |> SpiralSm.concat " " > │ > > │ > "FC", > │ > fun input -> > │ > Array.singleton 0 > │ > |> Array.append [[| 1 .. input.Length - 1 |]] > │ > |> Array.Parallel.map (fun i -> input.[[ i .. ]] + > input.[[ .. i - 1 ]]) > │ > |> SpiralSm.concat " " > │ > ]] > │ > let testCases = seq { > │ > "abc", "bca cab abc" > │ > "abcde", "bcdea cdeab deabc eabcd abcde" > │ > "abcdefghi", "bcdefghia cdefghiab defghiabc efghiabcd > fghiabcde ghiabcdef > │ > hiabcdefg iabcdefgh abcdefghi" > │ > "abab", "baba abab baba abab" > │ > "aa", "aa aa" > │ > "z", "z" > │ > } > │ > let rec rotateStringsTests = runAll (nameof > rotateStringsTests) _count solutions > │ > testCases > │ > rotateStringsTests > │ > |> sortResultList > │ > > │ > ── [ 9.12s - stdout ] > ────────────────────────────────────────────────────────── > │ > │ > │ > │ > │ > │ Test: rotateStringsTests > │ > │ > │ > │ Solution: abc > │ > │ Test case 1. A. Time: 2L > │ > │ Test case 2. B. Time: 1L > │ > │ Test case 3. C. Time: 1L > │ > │ Test case 4. CA. Time: 3L > │ > │ Test case 5. CB. Time: 2L > │ > │ Test case 6. D. Time: 2L > │ > │ Test case 7. E. Time: 1L > │ > │ Test case 8. F. Time: 1L > │ > │ Test case 9. FA. Time: 2L > │ > │ Test case 10. FB. Time: 7L > │ > │ Test case 11. FC. Time: 3L > │ > │ > │ > │ Solution: abcde > │ > │ Test case 1. A. Time: 0L > │ > │ Test case 2. B. Time: 0L > │ > │ Test case 3. C. Time: 0L > │ > │ Test case 4. CA. Time: 1L > │ > │ Test case 5. CB. Time: 0L > │ > │ Test case 6. D. Time: 3L > │ > │ Test case 7. E. Time: 0L > │ > │ Test case 8. F. Time: 0L > │ > │ Test case 9. FA. Time: 0L > │ > │ Test case 10. FB. Time: 1L > │ > │ Test case 11. FC. Time: 2L > │ > │ > │ > │ Solution: abcdefghi > │ > │ Test case 1. A. Time: 3L > │ > │ Test case 2. B. Time: 0L > │ > │ Test case 3. C. Time: 0L > │ > │ Test case 4. CA. Time: 1L > │ > │ Test case 5. CB. Time: 1L > │ > │ Test case 6. D. Time: 3L > │ > │ Test case 7. E. Time: 0L > │ > │ Test case 8. F. Time: 0L > │ > │ Test case 9. FA. Time: 0L > │ > │ Test case 10. FB. Time: 1L > │ > │ Test case 11. FC. Time: 2L > │ > │ > │ > │ Solution: abab > │ > │ Test case 1. A. Time: 0L > │ > │ Test case 2. B. Time: 0L > │ > │ Test case 3. C. Time: 0L > │ > │ Test case 4. CA. Time: 0L > │ > │ Test case 5. CB. Time: 0L > │ > │ Test case 6. D. Time: 1L > │ > │ Test case 7. E. Time: 0L > │ > │ Test case 8. F. Time: 0L > │ > │ Test case 9. FA. Time: 0L > │ > │ Test case 10. FB. Time: 1L > │ > │ Test case 11. FC. Time: 2L > │ > │ > │ > │ Solution: aa > │ > │ Test case 1. A. Time: 0L > │ > │ Test case 2. B. Time: 0L > │ > │ Test case 3. C. Time: 0L > │ > │ Test case 4. CA. Time: 0L > │ > │ Test case 5. CB. Time: 0L > │ > │ Test case 6. D. Time: 0L > │ > │ Test case 7. E. Time: 0L > │ > │ Test case 8. F. Time: 0L > │ > │ Test case 9. FA. Time: 0L > │ > │ Test case 10. FB. Time: 0L > │ > │ Test case 11. FC. Time: 1L > │ > │ > │ > │ Solution: z > │ > │ Test case 1. A. Time: 0L > │ > │ Test case 2. B. Time: 0L > │ > │ Test case 3. C. Time: 0L > │ > │ Test case 4. CA. Time: 0L > │ > │ Test case 5. CB. Time: 0L > │ > │ Test case 6. D. Time: 0L > │ > │ Test case 7. E. Time: 0L > │ > │ Test case 8. F. Time: 0L > │ > │ Test case 9. FA. Time: 0L > │ > │ Test case 10. FB. Time: 0L > │ > │ Test case 11. FC. Time: 3L > │ > │ > │ > │ Input | Expected > │ > | Result > │ > > │ > | Best > │ > │ --- | --- > │ > > │ > | --- > │ > > │ > | --- > │ > │ abc | bca cab abc > │ > | bca cab abc > │ > | (2, 1) > │ > │ abcde | bcdea cdeab deabc eabcd abcde > │ > | bcdea cdeab deabc eabcd abcde > │ > | (1, 0) > │ > │ abcdefghi | bcdefghia cdefghiab defghiabc > efghiabcd fghiabcde > │ > ghiabcdef hiabcdefg iabcdefgh abcdefghi | bcdefghia cdefghiab > defghiabc efghiabcd > │ > fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi | (2, 0) > │ > │ abab | baba abab baba abab > │ > | baba abab baba abab > │ > | (1, 0) > │ > │ aa | aa aa > │ > > │ > | aa aa > │ > > │ > | (1, 0) > │ > │ z | z > │ > > │ > | z > │ > > │ > | (1, 0) > │ > │ > │ > │ Average Ranking > │ > │ Test case 1. Average Time: 0L > │ > │ Test case 2. Average Time: 0L > │ > │ Test case 3. Average Time: 0L > │ > │ Test case 4. Average Time: 0L > │ > │ Test case 5. Average Time: 0L > │ > │ Test case 7. Average Time: 0L > │ > │ Test case 8. Average Time: 0L > │ > │ Test case 9. Average Time: 0L > │ > │ Test case 6. Average Time: 1L > │ > │ Test case 10. Average Time: 1L > │ > │ Test case 11. Average Time: 2L > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## rotate_strings_tests > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ``` > │ > │ 02:21:12 verbose #1 > benchmark.run_all / {count = > │ > 2000000; test_name = rotate_strings_tests} > │ > │ > │ > │ 02:21:12 verbose #2 benchmark.run > / {input_str = > │ > "abc"} > │ > │ 02:21:13 verbose #3 benchmark.run > / solutions.map / {i > │ > = 1; test_name = F; time = 638} > │ > │ 02:21:14 verbose #4 benchmark.run > / solutions.map / {i > │ > = 2; test_name = FA; time = 779} > │ > │ > │ > │ 02:21:14 verbose #5 benchmark.run > / {input_str = > │ > "abcde"} > │ > │ 02:21:15 verbose #6 benchmark.run > / solutions.map / {i > │ > = 1; test_name = F; time = 745} > │ > │ 02:21:16 verbose #7 benchmark.run > / solutions.map / {i > │ > = 2; test_name = FA; time = 809} > │ > │ > │ > │ 02:21:16 verbose #8 benchmark.run > / {input_str = > │ > "abcdefghi"} > │ > │ 02:21:17 verbose #9 benchmark.run > / solutions.map / {i > │ > = 1; test_name = F; time = 1092} > │ > │ 02:21:18 verbose #10 > benchmark.run / solutions.map / > │ > {i = 2; test_name = FA; time = 1304} > │ > │ > │ > │ 02:21:18 verbose #11 > benchmark.run / {input_str = > │ > "abab"} > │ > │ 02:21:19 verbose #12 > benchmark.run / solutions.map / > │ > {i = 1; test_name = F; time = 536} > │ > │ 02:21:20 verbose #13 > benchmark.run / solutions.map / > │ > {i = 2; test_name = FA; time = 620} > │ > │ > │ > │ 02:21:20 verbose #14 > benchmark.run / {input_str = > │ > "aa"} > │ > │ 02:21:21 verbose #15 > benchmark.run / solutions.map / > │ > {i = 1; test_name = F; time = 365} > │ > │ 02:21:21 verbose #16 > benchmark.run / solutions.map / > │ > {i = 2; test_name = FA; time = 396} > │ > │ > │ > │ 02:21:21 verbose #17 > benchmark.run / {input_str = "z"} > │ > │ 02:21:22 verbose #18 > benchmark.run / solutions.map / > │ > {i = 1; test_name = F; time = 158} > │ > │ 02:21:22 verbose #19 > benchmark.run / solutions.map / > │ > {i = 2; test_name = FA; time = 143} > │ > │ ``` > │ > │ input | expected > │ > > │ > | result > │ > > │ > | best > │ > │ --- | --- > │ > > │ > | --- > │ > > │ > | --- > │ > │ "abc" | "bca cab abc" > │ > | "bca cab abc" > │ > | 1, 638 > │ > │ "abcde" | "bcdea cdeab deabc eabcd > abcde" > │ > | "bcdea cdeab deabc eabcd abcde" > │ > | 1, 745 > │ > │ "abcdefghi" | "bcdefghia cdefghiab > defghiabc efghiabcd > │ > fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi" | > "bcdefghia cdefghiab > │ > defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh > abcdefghi" | 1, 1092 > │ > │ "abab" | "baba abab baba abab" > │ > | "baba abab baba abab" > │ > | 1, 536 > │ > │ "aa" | "aa aa" > │ > > │ > | "aa aa" > │ > > │ > | 1, 365 > │ > │ "z" | "z" > │ > > │ > | "z" > │ > > │ > | 2, 143 > │ > │ ``` > │ > │ 02:21:22 verbose #20 > benchmark.sort_result_list / > │ > averages.iter / {avg = 589; i = 1} > │ > │ 02:21:22 verbose #21 > benchmark.sort_result_list / > │ > averages.iter / {avg = 675; i = 2} > │ > │ ``` > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > //// timeout=60000 > │ > > │ > inl get_solutions () = > │ > [[ > │ > // "A", > │ > // fun (input : string) => > │ > // let resultList = > │ > // List.fold (fun acc x => > │ > // let rotate (text : string) (letter : > string) = > │ > text.Substring (1, input.Length - 1) + letter > │ > // [[ rotate (if acc.IsEmpty then input > else acc.Head) > │ > (string x) ]] ++ acc > │ > // ) [[]] (Seq.toList input) > │ > > │ > // List.foldBack (fun acc x => x + acc + " ") > resultList "" > │ > // |> fun x => x.TrimEnd () > │ > > │ > // "B", > │ > // fun input => > │ > // input > │ > // |> Seq.toList > │ > // |> List.fold (fun (acc : string list) letter > => > │ > // let last = > │ > // if acc.IsEmpty > │ > // then input > │ > // else acc.Head > │ > > │ > // let item = last.[[1 .. input.Length - > 1]] + string letter > │ > > │ > // item :: acc > │ > // ) [[]] > │ > // |> List.rev > │ > // |> SpiralSm.concat " " > │ > > │ > // "C", > │ > // fun input => > │ > // input > │ > // |> Seq.toList > │ > // |> List.fold (fun (acc : list string) letter > => acc.Head.[[ 1 .. > │ > input.Length - 1 ]] + string letter :: acc) [[ input ]] > │ > // |> List.rev > │ > // |> List.skip 1 > │ > // |> SpiralSm.concat " " > │ > > │ > // "CA", > │ > // fun input => > │ > // input > │ > // |> Seq.fold (fun (acc : list string) letter > => acc.Head.[[ 1 .. > │ > input.Length - 1 ]] + string letter :: acc) [[ input ]] > │ > // |> Seq.rev > │ > // |> Seq.skip 1 > │ > // |> SpiralSm.concat " " > │ > > │ > // "CB", > │ > // fun input => > │ > // input > │ > // |> Seq.toArray > │ > // |> Array.fold (fun (acc : a _ string) letter > => acc |> > │ > Array.append (a ;[[ acc.[[0]].[[ 1 .. input.Length - 1 ]] + > string letter ]])) > │ > (a ;[[ input ]]) > │ > // |> Array.rev > │ > // |> Array.skip 1 > │ > // |> SpiralSm.concat " " > │ > > │ > // "D", > │ > // fun input => > │ > // input > │ > // |> Seq.toList > │ > // |> fun list => > │ > // let rec loop (acc : list (list char)) = > function > │ > // | _ when acc.Length = list.Length => > acc > │ > // | head :: tail => > │ > // let item = tail ++ [[ head ]] > │ > // loop (item :: acc) item > │ > // | [[]] => [[]] > │ > // loop [[]] list > │ > // |> List.rev > │ > // |> List.map (List.toArray >> String) > │ > // |> SpiralSm.concat " " > │ > > │ > // "E", > │ > // fun input => > │ > // input > │ > // |> Seq.toList > │ > // |> fun list => > │ > // let rec loop (last : string) = function > │ > // | head :: tail => > │ > // let item = last.[[1 .. > input.Length - 1]] + string > │ > head > │ > // item :: loop item tail > │ > // | [[]] => [[]] > │ > // loop input list > │ > // |> SpiralSm.concat " " > │ > > │ > "F", > │ > fun input => > │ > // Array.singleton 0 > │ > // |> Array.append [[| 1 .. input.Length - 1 |]] > │ > // |> Array.map (fun i -> input.[[ i .. ]] + > input.[[ .. i - 1 ]]) > │ > // |> SpiralSm.concat " " > │ > inl input_length = input |> sm.length > │ > am.singleton 0i32 > │ > |> am.append (am'.init_series 1 (input_length - > 1) 1 |> fun x => a x > │ > : _ int _) > │ > |> fun (a x) => x > │ > |> am'.map_base fun i => > │ > inl a = input |> sm'.slice i (input_length > - 1) > │ > inl b = input |> sm'.slice 0 (i - 1) > │ > a +. b > │ > |> fun x => a x : _ int _ > │ > |> seq.of_array > │ > |> sm'.concat " " > │ > > │ > "FA", > │ > fun input => > │ > // List.singleton 0 > │ > // |> List.append [[ 1 .. input.Length - 1 ]] > │ > // // |> List.map (fun i => input.[[ i .. ]] + > input.[[ .. i - 1 ]]) > │ > // |> SpiralSm.concat " " > │ > inl input_length = input |> sm.length > │ > listm.singleton 0i32 > │ > |> listm.append (listm'.init_series 1 > (input_length - 1) 1) > │ > |> listm.map (fun i => > │ > inl a = input |> sm'.slice i (input_length > - 1) > │ > inl b = if i = 0 then "" else input |> > sm'.slice 0 (i - 1) > │ > a +. b > │ > ) > │ > |> listm'.box > │ > |> listm'.to_array' > │ > |> fun x => a x : _ int _ > │ > |> seq.of_array > │ > |> sm'.concat " " > │ > > │ > // "FB", > │ > // fun input => > │ > // Seq.singleton 0 > │ > // // |> Seq.append (seq { 1 .. input.Length - 1 > }) > │ > // // |> Seq.map (fun i => input.[[ i .. ]] + > input.[[ .. i - 1 ]]) > │ > // |> SpiralSm.concat " " > │ > > │ > // "FC", > │ > // fun input => > │ > // Array.singleton 0 > │ > // |> Array.append (a ;[[ 1 .. input.Length - 1 > ]]) > │ > //// |> Array.Parallel.map (fun i => input.[[ i > .. ]] + input.[[ .. i > │ > - 1 ]]) > │ > // |> SpiralSm.concat " " > │ > ]] > │ > > │ > inl rec rotate_strings_tests () = > │ > inl test_cases = [[ > │ > "abc", "bca cab abc" > │ > "abcde", "bcdea cdeab deabc eabcd abcde" > │ > "abcdefghi", "bcdefghia cdefghiab defghiabc > efghiabcd fghiabcde > │ > ghiabcdef hiabcdefg iabcdefgh abcdefghi" > │ > "abab", "baba abab baba abab" > │ > "aa", "aa aa" > │ > "z", "z" > │ > ]] > │ > > │ > inl solutions = get_solutions () > │ > > │ > // inl is_fast () = true > │ > > │ > inl count = > │ > if is_fast () > │ > then 1000i32 > │ > else 2000000i32 > │ > > │ > run_all (reflection.nameof { rotate_strings_tests }) > count solutions > │ > test_cases > │ > |> sort_result_list > │ > > │ > rotate_strings_tests () > │ > > │ > ── [ 10.70s - stdout ] > ───────────────────────────────────────────────────────── > │ > │ > │ > │ ``` > │ > │ 00:00:00 v #1 benchmark.run_all / { > test_name = > │ > rotate_strings_tests; count = 2000000 } > │ > │ > │ > │ 00:00:00 v #2 benchmark.run / { > input_str = "abc" } > │ > │ 00:00:00 v #3 benchmark.run / > solutions.map / { i = 1; > │ > test_name = F; time = 464 } > │ > │ 00:00:01 v #4 benchmark.run / > solutions.map / { i = 2; > │ > test_name = FA; time = 537 } > │ > │ > │ > │ 00:00:01 v #5 benchmark.run / { > input_str = "abcde" } > │ > │ 00:00:02 v #6 benchmark.run / > solutions.map / { i = 1; > │ > test_name = F; time = 452 } > │ > │ 00:00:03 v #7 benchmark.run / > solutions.map / { i = 2; > │ > test_name = FA; time = 819 } > │ > │ > │ > │ 00:00:03 v #8 benchmark.run / { > input_str = "abcdefghi" > │ > } > │ > │ 00:00:04 v #9 benchmark.run / > solutions.map / { i = 1; > │ > test_name = F; time = 816 } > │ > │ 00:00:05 v #10 benchmark.run / > solutions.map / { i = 2; > │ > test_name = FA; time = 1278 } > │ > │ > │ > │ 00:00:05 v #11 benchmark.run / { > input_str = "abab" } > │ > │ 00:00:06 v #12 benchmark.run / > solutions.map / { i = 1; > │ > test_name = F; time = 470 } > │ > │ 00:00:07 v #13 benchmark.run / > solutions.map / { i = 2; > │ > test_name = FA; time = 738 } > │ > │ > │ > │ 00:00:07 v #14 benchmark.run / { > input_str = "aa" } > │ > │ 00:00:07 v #15 benchmark.run / > solutions.map / { i = 1; > │ > test_name = F; time = 296 } > │ > │ 00:00:08 v #16 benchmark.run / > solutions.map / { i = 2; > │ > test_name = FA; time = 419 } > │ > │ > │ > │ 00:00:08 v #17 benchmark.run / { > input_str = "z" } > │ > │ 00:00:08 v #18 benchmark.run / > solutions.map / { i = 1; > │ > test_name = F; time = 124 } > │ > │ 00:00:09 v #19 benchmark.run / > solutions.map / { i = 2; > │ > test_name = FA; time = 156 } > │ > │ ``` > │ > │ input | expected > │ > > │ > | result > │ > > │ > | best > │ > │ --- | --- > │ > > │ > | --- > │ > > │ > | --- > │ > │ "abc" | "bca cab abc" > │ > | "bca cab abc" > │ > | 1, 464 > │ > │ "abcde" | "bcdea cdeab deabc eabcd > abcde" > │ > | "bcdea cdeab deabc eabcd abcde" > │ > | 1, 452 > │ > │ "abcdefghi" | "bcdefghia cdefghiab > defghiabc efghiabcd > │ > fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi" | > "bcdefghia cdefghiab > │ > defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh > abcdefghi" | 1, 816 > │ > │ "abab" | "baba abab baba abab" > │ > | "baba abab baba abab" > │ > | 1, 470 > │ > │ "aa" | "aa aa" > │ > > │ > | "aa aa" > │ > > │ > | 1, 296 > │ > │ "z" | "z" > │ > > │ > | "z" > │ > > │ > | 1, 124 > │ > │ ``` > │ > │ 00:00:09 v #20 > benchmark.sort_result_list / > │ > averages.iter / { i = 1; avg = 437 } > │ > │ 00:00:09 v #21 > benchmark.sort_result_list / > │ > averages.iter / { i = 2; avg = 657 } > │ > │ ``` > │ > │ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > // rotate_strings_tests () > │ > () > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## binary_search_tests > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ``` > │ > │ 02:19:29 verbose #1 > benchmark.run_all / {count = > │ > 10000000; test_name = binary_search_tests} > │ > │ > │ > │ 02:19:29 verbose #2 benchmark.run > / {input_str = > │ > struct ([|1; 3; 4; 6; 8; 9; 11|], 6, 7)} > │ > │ 02:19:30 verbose #3 benchmark.run > / solutions.map / {i > │ > = 1; test_name = semi_open_1; time = 662} > │ > │ 02:19:30 verbose #4 benchmark.run > / solutions.map / {i > │ > = 2; test_name = closed_1; time = 619} > │ > │ 02:19:31 verbose #5 benchmark.run > / solutions.map / {i > │ > = 3; test_name = semi_open_2; time = 644} > │ > │ 02:19:32 verbose #6 benchmark.run > / solutions.map / {i > │ > = 4; test_name = closed_2; time = 610} > │ > │ > │ > │ 02:19:32 verbose #7 benchmark.run > / {input_str = > │ > struct ([|1; 3; 4; 6; 8; 9; 11|], 1, 7)} > │ > │ 02:19:33 verbose #8 benchmark.run > / solutions.map / {i > │ > = 1; test_name = semi_open_1; time = 607} > │ > │ 02:19:33 verbose #9 benchmark.run > / solutions.map / {i > │ > = 2; test_name = closed_1; time = 559} > │ > │ 02:19:34 verbose #10 > benchmark.run / solutions.map / > │ > {i = 3; test_name = semi_open_2; time = 612} > │ > │ 02:19:35 verbose #11 > benchmark.run / solutions.map / > │ > {i = 4; test_name = closed_2; time = 577} > │ > │ > │ > │ 02:19:35 verbose #12 > benchmark.run / {input_str = > │ > struct ([|1; 3; 4; 6; 8; 9; 11|], 11, 7)} > │ > │ 02:19:35 verbose #13 > benchmark.run / solutions.map / > │ > {i = 1; test_name = semi_open_1; time = 550} > │ > │ 02:19:36 verbose #14 > benchmark.run / solutions.map / > │ > {i = 2; test_name = closed_1; time = 580} > │ > │ 02:19:37 verbose #15 > benchmark.run / solutions.map / > │ > {i = 3; test_name = semi_open_2; time = 624} > │ > │ 02:19:37 verbose #16 > benchmark.run / solutions.map / > │ > {i = 4; test_name = closed_2; time = 590} > │ > │ > │ > │ 02:19:37 verbose #17 > benchmark.run / {input_str = > │ > struct ([|1; 3; 4; 6; 8; 9; 11|], 12, 7)} > │ > │ 02:19:38 verbose #18 > benchmark.run / solutions.map / > │ > {i = 1; test_name = semi_open_1; time = 574} > │ > │ 02:19:39 verbose #19 > benchmark.run / solutions.map / > │ > {i = 2; test_name = closed_1; time = 577} > │ > │ 02:19:39 verbose #20 > benchmark.run / solutions.map / > │ > {i = 3; test_name = semi_open_2; time = 582} > │ > │ 02:19:40 verbose #21 > benchmark.run / solutions.map / > │ > {i = 4; test_name = closed_2; time = 585} > │ > │ > │ > │ 02:19:40 verbose #22 > benchmark.run / {input_str = > │ > struct ([|1; 2; 3; 4...00; ...|], 60, 1000)} > │ > │ 02:19:41 verbose #23 > benchmark.run / solutions.map / > │ > {i = 1; test_name = semi_open_1; time = 610} > │ > │ 02:19:42 verbose #24 > benchmark.run / solutions.map / > │ > {i = 2; test_name = closed_1; time = 672} > │ > │ 02:19:42 verbose #25 > benchmark.run / solutions.map / > │ > {i = 3; test_name = semi_open_2; time = 636} > │ > │ 02:19:43 verbose #26 > benchmark.run / solutions.map / > │ > {i = 4; test_name = closed_2; time = 629} > │ > │ > │ > │ 02:19:43 verbose #27 > benchmark.run / {input_str = > │ > struct ([|1; 3; 4; 6; 8; 9; 11|], 6, 7)} > │ > │ 02:19:44 verbose #28 > benchmark.run / solutions.map / > │ > {i = 1; test_name = semi_open_1; time = 599} > │ > │ 02:19:44 verbose #29 > benchmark.run / solutions.map / > │ > {i = 2; test_name = closed_1; time = 561} > │ > │ 02:19:45 verbose #30 > benchmark.run / solutions.map / > │ > {i = 3; test_name = semi_open_2; time = 604} > │ > │ 02:19:46 verbose #31 > benchmark.run / solutions.map / > │ > {i = 4; test_name = closed_2; time = 573} > │ > │ > │ > │ 02:19:46 verbose #32 > benchmark.run / {input_str = > │ > struct ([|1; 3; 4; 6; 8; 9; 11|], 1, 7)} > │ > │ 02:19:47 verbose #33 > benchmark.run / solutions.map / > │ > {i = 1; test_name = semi_open_1; time = 635} > │ > │ 02:19:47 verbose #34 > benchmark.run / solutions.map / > │ > {i = 2; test_name = closed_1; time = 603} > │ > │ 02:19:48 verbose #35 > benchmark.run / solutions.map / > │ > {i = 3; test_name = semi_open_2; time = 644} > │ > │ 02:19:49 verbose #36 > benchmark.run / solutions.map / > │ > {i = 4; test_name = closed_2; time = 628} > │ > │ > │ > │ 02:19:49 verbose #37 > benchmark.run / {input_str = > │ > struct ([|1; 3; 4; 6; 8; 9; 11|], 11, 7)} > │ > │ 02:19:49 verbose #38 > benchmark.run / solutions.map / > │ > {i = 1; test_name = semi_open_1; time = 643} > │ > │ 02:19:50 verbose #39 > benchmark.run / solutions.map / > │ > {i = 2; test_name = closed_1; time = 606} > │ > │ 02:19:51 verbose #40 > benchmark.run / solutions.map / > │ > {i = 3; test_name = semi_open_2; time = 636} > │ > │ 02:19:52 verbose #41 > benchmark.run / solutions.map / > │ > {i = 4; test_name = closed_2; time = 624} > │ > │ > │ > │ 02:19:52 verbose #42 > benchmark.run / {input_str = > │ > struct ([|1; 3; 4; 6; 8; 9; 11|], 12, 7)} > │ > │ 02:19:52 verbose #43 > benchmark.run / solutions.map / > │ > {i = 1; test_name = semi_open_1; time = 689} > │ > │ 02:19:53 verbose #44 > benchmark.run / solutions.map / > │ > {i = 2; test_name = closed_1; time = 613} > │ > │ 02:19:54 verbose #45 > benchmark.run / solutions.map / > │ > {i = 3; test_name = semi_open_2; time = 623} > │ > │ 02:19:55 verbose #46 > benchmark.run / solutions.map / > │ > {i = 4; test_name = closed_2; time = 613} > │ > │ > │ > │ 02:19:55 verbose #47 > benchmark.run / {input_str = > │ > struct ([|1; 2; 3; 4...100; ...|], 60, 100)} > │ > │ 02:19:55 verbose #48 > benchmark.run / solutions.map / > │ > {i = 1; test_name = semi_open_1; time = 630} > │ > │ 02:19:56 verbose #49 > benchmark.run / solutions.map / > │ > {i = 2; test_name = closed_1; time = 633} > │ > │ 02:19:57 verbose #50 > benchmark.run / solutions.map / > │ > {i = 3; test_name = semi_open_2; time = 653} > │ > │ 02:19:58 verbose #51 > benchmark.run / solutions.map / > │ > {i = 4; test_name = closed_2; time = 646} > │ > │ ``` > │ > │ input > | expected | result | > │ > best > │ > │ --- > | --- | --- | > │ > --- > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7) > | US4_0 3 | US4_0 3 | > │ > 4, 610 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7) > | US4_0 0 | US4_0 0 | > │ > 2, 559 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7) > | US4_0 6 | US4_0 6 | > │ > 1, 550 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7) > | US4_1 | US4_1 | > │ > 1, 574 > │ > │ struct ([1; 2; 3; 4...00; ...], 60, > 1000) | US4_0 59 | US4_0 59 | > │ > 1, 610 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7) > | US4_0 3 | US4_0 3 | > │ > 2, 561 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7) > | US4_0 0 | US4_0 0 | > │ > 2, 603 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7) > | US4_0 6 | US4_0 6 | > │ > 2, 606 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7) > | US4_1 | US4_1 | > │ > 2, 613 > │ > │ struct ([1; 2; 3; 4...100; ...], 60, > 100) | US4_0 59 | US4_0 59 | > │ > 1, 630 > │ > │ ``` > │ > │ 02:19:58 verbose #52 > benchmark.sort_result_list / > │ > averages.iter / {avg = 602; i = 2} > │ > │ 02:19:58 verbose #53 > benchmark.sort_result_list / > │ > averages.iter / {avg = 607; i = 4} > │ > │ 02:19:58 verbose #54 > benchmark.sort_result_list / > │ > averages.iter / {avg = 619; i = 1} > │ > │ 02:19:58 verbose #55 > benchmark.sort_result_list / > │ > averages.iter / {avg = 625; i = 3} > │ > │ ``` > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > //// timeout=90000 > │ > > │ > inl binary_search_semi_open_1 arr target left right = > │ > inl rec body left right = > │ > if left >= right > │ > then None > │ > else > │ > inl mid = (left + right) / 2 > │ > inl item = index arr mid > │ > if item = target > │ > then Some mid > │ > elif item < target > │ > then loop (mid + 1) right > │ > else loop left mid > │ > and inl loop left right = > │ > if var_is right |> not > │ > then body left right > │ > else > │ > inl left = dyn left > │ > join body left right > │ > loop left right > │ > > │ > inl binary_search_closed_1 arr target left right = > │ > inl rec body left right = > │ > if left > right > │ > then None > │ > else > │ > inl mid = (left + right) / 2 > │ > inl item = index arr mid > │ > if item = target > │ > then Some mid > │ > elif item < target > │ > then loop (mid + 1) right > │ > else loop left (mid - 1) > │ > and inl loop left right = > │ > if var_is right |> not > │ > then body left right > │ > else > │ > inl left = dyn left > │ > join body left right > │ > loop left right > │ > > │ > inl binary_search_semi_open_2 arr target left right = > │ > let rec body left right = > │ > if left >= right > │ > then None > │ > else > │ > inl mid = (left + right) / 2 > │ > inl item = index arr mid > │ > if item = target > │ > then Some mid > │ > elif item < target > │ > then loop (mid + 1) right > │ > else loop left mid > │ > and inl loop left right = body left right > │ > loop left right > │ > > │ > inl binary_search_closed_2 arr target left right = > │ > let rec body left right = > │ > if left > right > │ > then None > │ > else > │ > inl mid = (left + right) / 2 > │ > inl item = index arr mid > │ > if item = target > │ > then Some mid > │ > elif item < target > │ > then loop (mid + 1) right > │ > else loop left (mid - 1) > │ > and inl loop left right = body left right > │ > loop left right > │ > > │ > inl get_solutions () = > │ > [[ > │ > "semi_open_1", > │ > fun (arr, (target, len)) => > │ > binary_search_semi_open_1 arr target 0 len > │ > > │ > "closed_1", > │ > fun (arr, (target, len)) => > │ > binary_search_closed_1 arr target 0 (len - 1) > │ > > │ > "semi_open_2", > │ > fun (arr, (target, len)) => > │ > binary_search_semi_open_2 arr target 0 len > │ > > │ > "closed_2", > │ > fun (arr, (target, len)) => > │ > binary_search_closed_2 arr target 0 (len - 1) > │ > ]] > │ > > │ > inl rec binary_search_tests () = > │ > inl arr_with_len target len arr = > │ > arr, (target, (len |> optionm'.default_with fun () > => length arr)) > │ > > │ > inl test_cases = [[ > │ > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6 > None), (Some 3i32) > │ > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1 > None), (Some 0i32) > │ > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len > 11 None), (Some 6i32) > │ > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len > 12 None), None > │ > ((am'.init_series 1i32 1000 1 |> fun x => a x : _ > int _) |> arr_with_len > │ > 60 None), (Some 59) > │ > > │ > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6 > (Some 7)), (Some > │ > 3i32) > │ > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1 > (Some 7)), (Some > │ > 0i32) > │ > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len > 11 (Some 7)), (Some > │ > 6i32) > │ > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len > 12 (Some 7)), None > │ > ((am'.init_series 1i32 1000 1 |> fun x => a x : _ > int _) |> arr_with_len > │ > 60 (Some 100)), (Some 59) > │ > ]] > │ > > │ > inl solutions = get_solutions () > │ > > │ > // inl is_fast () = true > │ > > │ > inl count = > │ > if is_fast () > │ > then 1000i32 > │ > else 10000000i32 > │ > > │ > run_all (reflection.nameof { binary_search_tests }) > count solutions > │ > test_cases > │ > |> sort_result_list > │ > > │ > > │ > let main () = > │ > binary_search_tests () > │ > > │ > ── [ 27.83s - stdout ] > ───────────────────────────────────────────────────────── > │ > │ > │ > │ ``` > │ > │ 00:00:00 v #1 benchmark.run_all / { > test_name = > │ > binary_search_tests; count = 10000000 } > │ > │ > │ > │ 00:00:00 v #2 benchmark.run / { > input_str = struct ([|1; > │ > 3; 4; 6; 8; 9; 11|], 6, 7) } > │ > │ 00:00:00 v #3 benchmark.run / > solutions.map / { i = 1; > │ > test_name = semi_open_1; time = 556 } > │ > │ 00:00:01 v #4 benchmark.run / > solutions.map / { i = 2; > │ > test_name = closed_1; time = 518 } > │ > │ 00:00:02 v #5 benchmark.run / > solutions.map / { i = 3; > │ > test_name = semi_open_2; time = 571 } > │ > │ 00:00:02 v #6 benchmark.run / > solutions.map / { i = 4; > │ > test_name = closed_2; time = 573 } > │ > │ > │ > │ 00:00:02 v #7 benchmark.run / { > input_str = struct ([|1; > │ > 3; 4; 6; 8; 9; 11|], 1, 7) } > │ > │ 00:00:03 v #8 benchmark.run / > solutions.map / { i = 1; > │ > test_name = semi_open_1; time = 595 } > │ > │ 00:00:04 v #9 benchmark.run / > solutions.map / { i = 2; > │ > test_name = closed_1; time = 589 } > │ > │ 00:00:05 v #10 benchmark.run / > solutions.map / { i = 3; > │ > test_name = semi_open_2; time = 637 } > │ > │ 00:00:05 v #11 benchmark.run / > solutions.map / { i = 4; > │ > test_name = closed_2; time = 636 } > │ > │ > │ > │ 00:00:05 v #12 benchmark.run / { > input_str = struct > │ > ([|1; 3; 4; 6; 8; 9; 11|], 11, 7) } > │ > │ 00:00:06 v #13 benchmark.run / > solutions.map / { i = 1; > │ > test_name = semi_open_1; time = 589 } > │ > │ 00:00:07 v #14 benchmark.run / > solutions.map / { i = 2; > │ > test_name = closed_1; time = 592 } > │ > │ 00:00:08 v #15 benchmark.run / > solutions.map / { i = 3; > │ > test_name = semi_open_2; time = 581 } > │ > │ 00:00:08 v #16 benchmark.run / > solutions.map / { i = 4; > │ > test_name = closed_2; time = 633 } > │ > │ > │ > │ 00:00:08 v #17 benchmark.run / { > input_str = struct > │ > ([|1; 3; 4; 6; 8; 9; 11|], 12, 7) } > │ > │ 00:00:09 v #18 benchmark.run / > solutions.map / { i = 1; > │ > test_name = semi_open_1; time = 517 } > │ > │ 00:00:10 v #19 benchmark.run / > solutions.map / { i = 2; > │ > test_name = closed_1; time = 645 } > │ > │ 00:00:10 v #20 benchmark.run / > solutions.map / { i = 3; > │ > test_name = semi_open_2; time = 518 } > │ > │ 00:00:11 v #21 benchmark.run / > solutions.map / { i = 4; > │ > test_name = closed_2; time = 469 } > │ > │ > │ > │ 00:00:11 v #22 benchmark.run / { > input_str = struct > │ > ([|1; 2; 3; 4...00; ...|], 60, 1000) } > │ > │ 00:00:12 v #23 benchmark.run / > solutions.map / { i = 1; > │ > test_name = semi_open_1; time = 500 } > │ > │ 00:00:12 v #24 benchmark.run / > solutions.map / { i = 2; > │ > test_name = closed_1; time = 507 } > │ > │ 00:00:13 v #25 benchmark.run / > solutions.map / { i = 3; > │ > test_name = semi_open_2; time = 495 } > │ > │ 00:00:14 v #26 benchmark.run / > solutions.map / { i = 4; > │ > test_name = closed_2; time = 507 } > │ > │ > │ > │ 00:00:14 v #27 benchmark.run / { > input_str = struct > │ > ([|1; 3; 4; 6; 8; 9; 11|], 6, 7) } > │ > │ 00:00:14 v #28 benchmark.run / > solutions.map / { i = 1; > │ > test_name = semi_open_1; time = 451 } > │ > │ 00:00:15 v #29 benchmark.run / > solutions.map / { i = 2; > │ > test_name = closed_1; time = 439 } > │ > │ 00:00:15 v #30 benchmark.run / > solutions.map / { i = 3; > │ > test_name = semi_open_2; time = 435 } > │ > │ 00:00:16 v #31 benchmark.run / > solutions.map / { i = 4; > │ > test_name = closed_2; time = 459 } > │ > │ > │ > │ 00:00:16 v #32 benchmark.run / { > input_str = struct > │ > ([|1; 3; 4; 6; 8; 9; 11|], 1, 7) } > │ > │ 00:00:17 v #33 benchmark.run / > solutions.map / { i = 1; > │ > test_name = semi_open_1; time = 442 } > │ > │ 00:00:17 v #34 benchmark.run / > solutions.map / { i = 2; > │ > test_name = closed_1; time = 479 } > │ > │ 00:00:18 v #35 benchmark.run / > solutions.map / { i = 3; > │ > test_name = semi_open_2; time = 446 } > │ > │ 00:00:18 v #36 benchmark.run / > solutions.map / { i = 4; > │ > test_name = closed_2; time = 480 } > │ > │ > │ > │ 00:00:18 v #37 benchmark.run / { > input_str = struct > │ > ([|1; 3; 4; 6; 8; 9; 11|], 11, 7) } > │ > │ 00:00:19 v #38 benchmark.run / > solutions.map / { i = 1; > │ > test_name = semi_open_1; time = 482 } > │ > │ 00:00:20 v #39 benchmark.run / > solutions.map / { i = 2; > │ > test_name = closed_1; time = 458 } > │ > │ 00:00:20 v #40 benchmark.run / > solutions.map / { i = 3; > │ > test_name = semi_open_2; time = 481 } > │ > │ 00:00:21 v #41 benchmark.run / > solutions.map / { i = 4; > │ > test_name = closed_2; time = 471 } > │ > │ > │ > │ 00:00:21 v #42 benchmark.run / { > input_str = struct > │ > ([|1; 3; 4; 6; 8; 9; 11|], 12, 7) } > │ > │ 00:00:22 v #43 benchmark.run / > solutions.map / { i = 1; > │ > test_name = semi_open_1; time = 485 } > │ > │ 00:00:22 v #44 benchmark.run / > solutions.map / { i = 2; > │ > test_name = closed_1; time = 461 } > │ > │ 00:00:23 v #45 benchmark.run / > solutions.map / { i = 3; > │ > test_name = semi_open_2; time = 441 } > │ > │ 00:00:23 v #46 benchmark.run / > solutions.map / { i = 4; > │ > test_name = closed_2; time = 447 } > │ > │ > │ > │ 00:00:23 v #47 benchmark.run / { > input_str = struct > │ > ([|1; 2; 3; 4...100; ...|], 60, 100) } > │ > │ 00:00:24 v #48 benchmark.run / > solutions.map / { i = 1; > │ > test_name = semi_open_1; time = 507 } > │ > │ 00:00:25 v #49 benchmark.run / > solutions.map / { i = 2; > │ > test_name = closed_1; time = 470 } > │ > │ 00:00:25 v #50 benchmark.run / > solutions.map / { i = 3; > │ > test_name = semi_open_2; time = 492 } > │ > │ 00:00:26 v #51 benchmark.run / > solutions.map / { i = 4; > │ > test_name = closed_2; time = 482 } > │ > │ ``` > │ > │ input > | expected | result | > │ > best > │ > │ --- > | --- | --- | > │ > --- > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7) > | US6_0 3 | US6_0 3 | > │ > 2, 518 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7) > | US6_0 0 | US6_0 0 | > │ > 2, 589 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7) > | US6_0 6 | US6_0 6 | > │ > 3, 581 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7) > | US6_1 | US6_1 | > │ > 4, 469 > │ > │ struct ([1; 2; 3; 4...00; ...], 60, > 1000) | US6_0 59 | US6_0 59 | > │ > 3, 495 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7) > | US6_0 3 | US6_0 3 | > │ > 3, 435 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7) > | US6_0 0 | US6_0 0 | > │ > 1, 442 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7) > | US6_0 6 | US6_0 6 | > │ > 2, 458 > │ > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7) > | US6_1 | US6_1 | > │ > 3, 441 > │ > │ struct ([1; 2; 3; 4...100; ...], 60, > 100) | US6_0 59 | US6_0 59 | > │ > 2, 470 > │ > │ ``` > │ > │ 00:00:26 v #52 > benchmark.sort_result_list / > │ > averages.iter / { i = 3; avg = 509 } > │ > │ 00:00:26 v #53 > benchmark.sort_result_list / > │ > averages.iter / { i = 1; avg = 512 } > │ > │ 00:00:26 v #54 > benchmark.sort_result_list / > │ > averages.iter / { i = 2; avg = 515 } > │ > │ 00:00:26 v #55 > benchmark.sort_result_list / > │ > averages.iter / { i = 4; avg = 515 } > │ > │ ``` > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## returnLettersWithOddCountTests > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ Test: ReturnLettersWithOddCount > │ > │ > │ > │ Solution: 1 > │ > │ Test case 1. A. Time: 645L > │ > │ > │ > │ Solution: 2 > │ > │ Test case 1. A. Time: 663L > │ > │ > │ > │ Solution: 3 > │ > │ Test case 1. A. Time: 680L > │ > │ > │ > │ Solution: 9 > │ > │ Test case 1. A. Time: 730L > │ > │ > │ > │ Solution: 10 > │ > │ Test case 1. A. Time: 815L > │ > │ > │ > │ Input | Expected | Result > | Best > │ > │ --- | --- | --- > | --- > │ > │ 1 | a | a > | (1, 645) > │ > │ 2 | ba | ba > | (1, 663) > │ > │ 3 | aaa | aaa > | (1, 680) > │ > │ 9 | aaaaaaaaa | aaaaaaaaa > | (1, 730) > │ > │ 10 | baaaaaaaaa | baaaaaaaaa > | (1, 815) > │ > │ > │ > │ Averages > │ > │ Test case 1. Average Time: 706L > │ > │ > │ > │ Ranking > │ > │ Test case 1. Average Time: 706L > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let solutions = [[ > │ > "A", > │ > fun n -> > │ > let mutable _builder = StringBuilder (new > string('a', n)) > │ > if n % 2 = 0 then > │ > _builder.[[0]] <- 'b' > │ > > │ > _builder.ToString () > │ > ]] > │ > let testCases = seq { > │ > 1, "a" > │ > 2, "ba" > │ > 3, "aaa" > │ > 9, "aaaaaaaaa" > │ > 10, "baaaaaaaaa" > │ > } > │ > let rec returnLettersWithOddCountTests = > │ > runAll (nameof returnLettersWithOddCountTests) _count > solutions testCases > │ > returnLettersWithOddCountTests > │ > |> sortResultList > │ > > │ > ── [ 826.61ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ > │ > │ > │ > │ Test: returnLettersWithOddCountTests > │ > │ > │ > │ Solution: 1 > │ > │ Test case 1. A. Time: 19L > │ > │ > │ > │ Solution: 2 > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Solution: 3 > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Solution: 9 > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Solution: 10 > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Input | Expected | Result | Best > │ > │ --- | --- | --- | --- > │ > │ 1 | a | a | (1, 19) > │ > │ 2 | ba | ba | (1, 0) > │ > │ 3 | aaa | aaa | (1, 0) > │ > │ 9 | aaaaaaaaa | aaaaaaaaa | (1, 0) > │ > │ 10 | baaaaaaaaa | baaaaaaaaa | (1, 0) > │ > │ > │ > │ Average Ranking > │ > │ Test case 1. Average Time: 3L > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## hasAnyPairCloseToEachotherTests > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ Test: HasAnyPairCloseToEachother > │ > │ > │ > │ Solution: 0 > │ > │ Test case 1. A. Time: 137L > │ > │ > │ > │ Solution: 1,2 > │ > │ Test case 1. A. Time: 186L > │ > │ > │ > │ Solution: 3,5 > │ > │ Test case 1. A. Time: 206L > │ > │ > │ > │ Solution: 3,4,6 > │ > │ Test case 1. A. Time: 149L > │ > │ > │ > │ Solution: 2,4,6 > │ > │ Test case 1. A. Time: 150L > │ > │ > │ > │ Input | Expected | Result | > Best > │ > │ --- | --- | --- | > --- > │ > │ 0 | False | False | > (1, 137) > │ > │ 1,2 | True | True | > (1, 186) > │ > │ 3,5 | False | False | > (1, 206) > │ > │ 3,4,6 | True | True | > (1, 149) > │ > │ 2,4,6 | False | False | > (1, 150) > │ > │ > │ > │ Averages > │ > │ Test case 1. Average Time: 165L > │ > │ > │ > │ Ranking > │ > │ Test case 1. Average Time: 165L > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let solutions = [[ > │ > "A", > │ > fun (a: int[[]]) -> > │ > let indices = System.Linq.Enumerable.Range(0, > a.Length) |> > │ > System.Linq.Enumerable.ToArray > │ > System.Array.Sort (a, indices) > │ > > │ > indices > │ > |> Array.take (a.Length - 1) > │ > |> Array.exists (fun i -> a.[[i + 1]] - a.[[i]] = > 1) > │ > ]] > │ > let testCases = seq { > │ > [[| 0 |]], false > │ > [[| 1; 2 |]], true > │ > [[| 3; 5 |]], false > │ > [[| 3; 4; 6 |]], true > │ > [[| 2; 4; 6 |]], false > │ > } > │ > let rec hasAnyPairCloseToEachotherTests = > │ > runAll (nameof hasAnyPairCloseToEachotherTests) _count > solutions testCases > │ > hasAnyPairCloseToEachotherTests > │ > |> sortResultList > │ > > │ > ── [ 735.62ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ > │ > │ > │ > │ Test: hasAnyPairCloseToEachotherTests > │ > │ > │ > │ Solution: 0 > │ > │ Test case 1. A. Time: 1L > │ > │ > │ > │ Solution: 1,2 > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Solution: 3,5 > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Solution: 3,4,6 > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Solution: 2,4,6 > │ > │ Test case 1. A. Time: 0L > │ > │ > │ > │ Input | Expected | Result | Best > │ > │ --- | --- | --- | --- > │ > │ 0 | False | False | (1, 1) > │ > │ 1,2 | True | True | (1, 0) > │ > │ 3,5 | False | False | (1, 0) > │ > │ 3,4,6 | True | True | (1, 0) > │ > │ 2,4,6 | False | False | (1, 0) > │ > │ > │ > │ Average Ranking > │ > │ Test case 1. Average Time: 0L > │ > │ > │ 00:01:18 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 84670 } > │ 00:01:18 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/apps/perf/Perf.dib.ipynb", "--to", "html", > "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/apps/perf/Perf.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:01:19 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/apps/perf/Perf.dib.ipynb to html > │ 00:01:19 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:01:19 v #7 ! validate(nb) > │ 00:01:20 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:01:20 v #9 ! return _pygments_highlight( > │ 00:01:21 v #10 ! [NbConvertApp] Writing 458064 bytes to > c:\home\git\polyglot\apps\perf\Perf.dib.html > │ 00:01:21 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 848 } > │ 00:01:21 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 848 } > │ 00:01:21 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/apps/perf/Perf.dib.html'; (Get-Content $path -Raw) > -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } > | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = > 'c:/home/git/polyglot/apps/perf/Perf.dib.html'; (Get-Content $path -Raw) > -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | > Set-Content $path"; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:01:21 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:01:21 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:01:21 d #16 spiral.run / dib / { exit_code = 0; > result_length = 85577 } > │ 00:00:00 d #1 writeDibCode / output: Fs / path: Perf.dib > │ 00:00:00 d #2 parseDibCode / output: Fs / file: Perf.dib > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../apps/dir-tree-html/build.ps1 } | Invoke-Block > > ── [ 54.73s - stdout ] ───────────────────────────────────────────────────────── > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "DirTreeHtml.dib"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib", "--output-path", > "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb"]; options = { > command = dotnet repl --exit-after-run --run > "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib" --output-path > "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb"; > cancellation_token = None; environment_variables = > Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = > None; stdin = None; trace = false; working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # DirTreeHtml (Polyglot) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #r > │ > > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > │ > dard2.1/FSharp.Control.AsyncSeq.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > │ > 0/System.Reactive.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > │ > netstandard2.0/System.Reactive.Linq.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > │ > #r > │ > > @"../../../../../../../.nuget/packages/falco.markup/1.1.1/lib/netstandard2.0/Fal > │ > co.Markup.dll" > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > #if !INTERACTIVE > │ > open Lib > │ > #endif > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > open SpiralFileSystem.Operators > │ > open Falco.Markup > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type FileSystemNode = > │ > | File of string * string * int64 > │ > | Folder of string * string * FileSystemNode list > │ > | Root of FileSystemNode list > │ > > │ > let rec scanDirectory isRoot (basePath : string) (path : > string) = > │ > let relativePath = > │ > path > │ > |> SpiralSm.replace basePath "" > │ > |> SpiralSm.replace "\\" "/" > │ > |> SpiralSm.replace "//" "/" > │ > |> SpiralSm.trim_start [[| '/' |]] > │ > > │ > let directories = > │ > path > │ > |> System.IO.Directory.GetDirectories > │ > |> Array.toList > │ > |> List.sort > │ > |> List.map (scanDirectory false basePath) > │ > let files = > │ > path > │ > |> System.IO.Directory.GetFiles > │ > |> Array.toList > │ > |> List.sort > │ > |> List.map (fun f -> File > (System.IO.Path.GetFileName f, relativePath, > │ > System.IO.FileInfo(f).Length)) > │ > > │ > let children = directories @ files > │ > if isRoot > │ > then Root children > │ > else Folder (path |> System.IO.Path.GetFileName, > relativePath, children) > │ > > │ > let rec generateHtml fsNode = > │ > let sizeLabel size = > │ > match float size with > │ > | size when size > 1024.0 * 1024.0 -> $"%.2f{size / > 1024.0 / 1024.0} MB" > │ > | size when size > 1024.0 -> $"%.2f{size / 1024.0} > KB" > │ > | size -> $"%.2f{size} B" > │ > match fsNode with > │ > | File (fileName, relativePath, size) -> > │ > Elem.div [[]] [[ > │ > Text.raw "📄 " > │ > Elem.a [[ > │ > Attr.href $"""{relativePath}{if > relativePath = "" then "" else > │ > "/"}{fileName}""" > │ > ]] [[ > │ > Text.raw fileName > │ > ]] > │ > Elem.span [[]] [[ > │ > Text.raw $" ({size |> sizeLabel})" > │ > ]] > │ > ]] > │ > | Folder (folderName, relativePath, children) -> > │ > let size = > │ > let rec loop children = > │ > children > │ > |> List.sumBy (function > │ > | File (_, _, size) -> size > │ > | Folder (_, _, children) > │ > | Root children -> loop children > │ > ) > │ > loop children > │ > Elem.details [[ > │ > Attr.open' "true" > │ > ]] [[ > │ > Elem.summary [[]] [[ > │ > Text.raw "📂 " > │ > Elem.a [[ > │ > Attr.href relativePath > │ > ]] [[ > │ > Text.raw folderName > │ > ]] > │ > Elem.span [[]] [[ > │ > Text.raw $" ({size |> sizeLabel})" > │ > ]] > │ > ]] > │ > Elem.div [[]] [[ > │ > yield! children |> List.map generateHtml > │ > ]] > │ > ]] > │ > | Root children -> > │ > Elem.div [[]] [[ > │ > yield! children |> List.map generateHtml > │ > ]] > │ > > │ > let generateHtmlForFileSystem root = > │ > $"""<!DOCTYPE html> > │ > <html lang="en"> > │ > <head> > │ > <meta charset="UTF-8"> > │ > <style> > │ > body {{ > │ > background-color: #222; > │ > color: #ccc; > │ > }} > │ > a {{ > │ > color: #777; > │ > font-size: 15px; > │ > }} > │ > span {{ > │ > font-size: 11px; > │ > }} > │ > div > div {{ > │ > padding-left: 10px; > │ > }} > │ > details > div {{ > │ > padding-left: 19px; > │ > }} > │ > </style> > │ > </head> > │ > <body> > │ > {root |> generateHtml |> renderNode} > │ > </body> > │ > </html> > │ > """ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let expected = """<!DOCTYPE html> > │ > <html lang="en"> > │ > <head> > │ > <meta charset="UTF-8"> > │ > <style> > │ > body { > │ > background-color: #222; > │ > color: #ccc; > │ > } > │ > a { > │ > color: #777; > │ > font-size: 15px; > │ > } > │ > span { > │ > font-size: 11px; > │ > } > │ > div > div { > │ > padding-left: 10px; > │ > } > │ > details > div { > │ > padding-left: 19px; > │ > } > │ > </style> > │ > </head> > │ > <body> > │ > <div><details open="true"><summary>📂 <a > href="_.root">_.root</a><span> > │ > (10.00 B)</span></summary><div><details > open="true"><summary>📂 <a > │ > href="_.root/3">3</a><span> (6.00 > B)</span></summary><div><details > │ > open="true"><summary>📂 <a > href="_.root/3/2">2</a><span> (3.00 > │ > B)</span></summary><div><details > open="true"><summary>📂 <a > │ > href="_.root/3/2/1">1</a><span> (1.00 > B)</span></summary><div><div>📄 <a > │ > href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 > │ > B)</span></div></div></details><div>📄 <a > │ > href="_.root/3/2/file.txt">file.txt</a><span> (2.00 > │ > B)</span></div></div></details><div>📄 <a > │ > href="_.root/3/file.txt">file.txt</a><span> (3.00 > │ > B)</span></div></div></details><div>📄 <a > │ > href="_.root/file.txt">file.txt</a><span> (4.00 > │ > B)</span></div></div></details></div> > │ > </body> > │ > </html> > │ > """ > │ > > │ > let struct (tempFolder, disposable) = expected |> > SpiralCrypto.hash_text |> > │ > SpiralFileSystem.create_temp_dir' > │ > let rec loop d n = async { > │ > if n >= 0 then > │ > tempFolder </> d |> > System.IO.Directory.CreateDirectory |> ignore > │ > do! > │ > n > │ > |> string > │ > |> String.replicate (n + 1) > │ > |> SpiralFileSystem.write_all_text_async > (tempFolder </> d </> > │ > $"file.txt") > │ > do! loop $"{d}/{n}" (n - 1) > │ > } > │ > loop "_.root" 3 > │ > |> Async.RunSynchronously > │ > > │ > let html = > │ > scanDirectory true tempFolder tempFolder > │ > |> generateHtmlForFileSystem > │ > > │ > html > │ > |> _assertEqual expected > │ > > │ > disposable.Dispose () > │ > > │ > html |> > Microsoft.DotNet.Interactive.Formatting.Html.ToHtmlContent > │ > > │ > ── [ 152.27ms - return value ] > ───────────────────────────────────────────────── > │ > │ <!DOCTYPE html> > │ > │ <html lang="en"> > │ > │ <head> > │ > │ <meta charset="UTF-8"> > │ > │ <style> > │ > │ body { > │ > │ background-color: #222; > │ > │ color: #ccc; > │ > │ } > │ > │ a { > │ > │ color: #777; > │ > │ font-size: 15px; > │ > │ } > │ > │ span { > │ > │ font-size: 11px; > │ > │ } > │ > │ div > div { > │ > │ padding-left: 10px; > │ > │ } > │ > │ details > div { > │ > │ padding-left: 19px; > │ > │ } > │ > │ </style> > │ > │ </head> > │ > │ <body> > │ > │ <div><details > open="true"><summary>📂 <a > │ > href="_.root">_.root</a><span> (10.00 > B)</span></summary><div><details > │ > open="true"><summary>📂 <a > href="_.root/3">3</a><span> (6.00 > │ > B)</span></summary><div><details > open="true"><summary>📂 <a > │ > href="_.root/3/2">2</a><span> (3.00 > B)</span></summary><div><details > │ > open="true"><summary>📂 <a > href="_.root/3/2/1">1</a><span> (1.00 > │ > B)</span></summary><div><div>📄 <a > │ > href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 > │ > B)</span></div></div></details><div>📄 <a > │ > href="_.root/3/2/file.txt">file.txt</a><span> (2.00 > │ > B)</span></div></div></details><div>📄 <a > │ > href="_.root/3/file.txt">file.txt</a><span> (3.00 > │ > B)</span></div></div></details><div>📄 <a > │ > href="_.root/file.txt">file.txt</a><span> (4.00 > │ > B)</span></div></div></details></div> > │ > │ </body> > │ > │ </html> > │ > │ > │ > > │ > ── [ 156.28ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ "<!DOCTYPE html> > │ > │ <html lang="en"> > │ > │ <head> > │ > │ <meta charset="UTF-8"> > │ > │ <style> > │ > │ body { > │ > │ background-color: #222; > │ > │ color: #ccc; > │ > │ } > │ > │ a { > │ > │ color: #777; > │ > │ font-size: 15px; > │ > │ } > │ > │ span { > │ > │ font-size: 11px; > │ > │ } > │ > │ div > div { > │ > │ padding-left: 10px; > │ > │ } > │ > │ details > div { > │ > │ padding-left: 19px; > │ > │ } > │ > │ </style> > │ > │ </head> > │ > │ <body> > │ > │ <div><details > open="true"><summary>📂 <a > │ > href="_.root">_.root</a><span> (10.00 > B)</span></summary><div><details > │ > open="true"><summary>📂 <a > href="_.root/3">3</a><span> (6.00 > │ > B)</span></summary><div><details > open="true"><summary>📂 <a > │ > href="_.root/3/2">2</a><span> (3.00 > B)</span></summary><div><details > │ > open="true"><summary>📂 <a > href="_.root/3/2/1">1</a><span> (1.00 > │ > B)</span></summary><div><div>📄 <a > │ > href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 > │ > B)</span></div></div></details><div>📄 <a > │ > href="_.root/3/2/file.txt">file.txt</a><span> (2.00 > │ > B)</span></div></div></details><div>📄 <a > │ > href="_.root/3/file.txt">file.txt</a><span> (3.00 > │ > B)</span></div></div></details><div>📄 <a > │ > href="_.root/file.txt">file.txt</a><span> (4.00 > │ > B)</span></div></div></details></div> > │ > │ </body> > │ > │ </html> > │ > │ " > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## Arguments > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > [[<RequireQualifiedAccess>]] > │ > type Arguments = > │ > | [[<Argu.ArguAttributes.ExactlyOnce>]] Dir of string > │ > | [[<Argu.ArguAttributes.ExactlyOnce>]] Html of string > │ > > │ > interface Argu.IArgParserTemplate with > │ > member s.Usage = > │ > match s with > │ > | Dir _ -> nameof Dir > │ > | Html _ -> nameof Html > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > Argu.ArgumentParser.Create<Arguments>().PrintUsage () > │ > > │ > ── [ 83.68ms - return value ] > ────────────────────────────────────────────────── > │ > │ "USAGE: dotnet-repl [--help] --dir > <string> --html <string> > │ > │ > │ > │ OPTIONS: > │ > │ > │ > │ --dir <string> Dir > │ > │ --html <string> Html > │ > │ --help display this > list of options. > │ > │ " > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## main > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let main args = > │ > let argsMap = args |> Runtime.parseArgsMap<Arguments> > │ > > │ > let dir = > │ > match argsMap.[[nameof Arguments.Dir]] with > │ > | [[ Arguments.Dir dir ]] -> Some dir > │ > | _ -> None > │ > |> Option.get > │ > > │ > let htmlPath = > │ > match argsMap.[[nameof Arguments.Html]] with > │ > | [[ Arguments.Html html ]] -> Some html > │ > | _ -> None > │ > |> Option.get > │ > > │ > let fileSystem = scanDirectory true dir dir > │ > let html = generateHtmlForFileSystem fileSystem > │ > > │ > html |> SpiralFileSystem.write_all_text_async htmlPath > │ > |> Async.runWithTimeout 30000 > │ > |> function > │ > | Some () -> 0 > │ > | None -> 1 > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let args = > │ > System.Environment.GetEnvironmentVariable "ARGS" > │ > |> SpiralRuntime.split_args > │ > |> Result.toArray > │ > |> Array.collect id > │ > > │ > match args with > │ > | [[||]] -> 0 > │ > | args -> if main args = 0 then 0 else failwith "main > failed" > │ > > │ > ── [ 73.09ms - return value ] > ────────────────────────────────────────────────── > │ > │ <div class="dni-plaintext"><pre>0 > │ > │ </pre></div><style> > │ > │ .dni-code-hint { > │ > │ font-style: italic; > │ > │ overflow: hidden; > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview { > │ > │ white-space: nowrap; > │ > │ } > │ > │ .dni-treeview td { > │ > │ vertical-align: top; > │ > │ text-align: start; > │ > │ } > │ > │ details.dni-treeview { > │ > │ padding-left: 1em; > │ > │ } > │ > │ table td { > │ > │ text-align: start; > │ > │ } > │ > │ table tr { > │ > │ vertical-align: top; > │ > │ margin: 0em 0px; > │ > │ } > │ > │ table tr td pre > │ > │ { > │ > │ vertical-align: top !important; > │ > │ margin: 0em 0px !important; > │ > │ } > │ > │ table th { > │ > │ text-align: start; > │ > │ } > │ > │ </style> > │ 00:00:20 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 13688 } > │ 00:00:20 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb", "--to", "html", > "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:21 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb to html > │ 00:00:21 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:00:21 v #7 ! validate(nb) > │ 00:00:21 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:00:21 v #9 ! return _pygments_highlight( > │ 00:00:22 v #10 ! [NbConvertApp] Writing 310059 bytes to > c:\home\git\polyglot\apps\dir-tree-html\DirTreeHtml.dib.html > │ 00:00:22 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 880 } > │ 00:00:22 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 880 } > │ 00:00:22 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html'; (Get-Content > $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + > $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; > $path = 'c:/home/git/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html'; > (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { > $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = > None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; > trace = true; working_directory = None } } > │ 00:00:22 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:00:22 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:00:22 d #16 spiral.run / dib / { exit_code = 0; > result_length = 14627 } > │ 00:00:00 d #1 writeDibCode / output: Fs / path: > DirTreeHtml.dib > │ 00:00:00 d #2 parseDibCode / output: Fs / file: > DirTreeHtml.dib > │ 00:00:00 d #1 persistCodeProject / packages: [Argu; > Falco.Markup; FSharp.Control.AsyncSeq; ... ] / modules: > [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; > deps/spiral/lib/spiral/crypto.fsx; ... ] / name: DirTreeHtml / hash: / > code.Length: 4638 > │ 00:00:00 d #2 buildProject / fullPath: > c:\home\git\polyglot\target\Builder\DirTreeHtml\DirTreeHtml.fsproj > │ 00:00:00 d #1 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "c:/home/git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" > --runtime linux-x64"; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" > --runtime linux-x64; cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\DirTreeHtml" } } > │ 00:00:01 v #2 > Determining projects to restore... > │ 00:00:01 v #3 > Paket version > 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 > │ 00:00:01 v #4 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:01 v #5 > Total time taken: 0 milliseconds > │ 00:00:02 v #6 > Restored > c:\home\git\polyglot\target\Builder\DirTreeHtml\DirTreeHtml.fsproj (in 302 ms). > │ 00:00:14 v #7 > DirTreeHtml -> > c:\home\git\polyglot\target\Builder\DirTreeHtml\bin\Release\net9.0\linux-x64\Dir > TreeHtml.dll > │ 00:00:16 v #8 > DirTreeHtml -> > C:\home\git\polyglot\apps\dir-tree-html\dist\ > │ 00:00:16 d #9 runtime.execute_with_options_async / { > exit_code = 0; output_length = 463; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" > --runtime linux-x64; cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\DirTreeHtml" } } > │ 00:00:16 d #10 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "c:/home/git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" > --runtime win-x64"; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" > --runtime win-x64; cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\DirTreeHtml" } } > │ 00:00:16 v #11 > Determining projects to restore... > │ 00:00:17 v #12 > Paket version > 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 > │ 00:00:17 v #13 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:17 v #14 > Total time taken: 0 milliseconds > │ 00:00:17 v #15 > Restored > c:\home\git\polyglot\target\Builder\DirTreeHtml\DirTreeHtml.fsproj (in 306 ms). > │ 00:00:29 v #16 > DirTreeHtml -> > c:\home\git\polyglot\target\Builder\DirTreeHtml\bin\Release\net9.0\win-x64\DirTr > eeHtml.dll > │ 00:00:30 v #17 > DirTreeHtml -> > C:\home\git\polyglot\apps\dir-tree-html\dist\ > │ 00:00:31 d #18 runtime.execute_with_options_async / { > exit_code = 0; output_length = 461; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\DirTreeHtml\DirTreeHtml.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\dir-tree-html\dist" > --runtime win-x64; cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\DirTreeHtml" } } > │ polyglot/apps/dir-tree-html/build.ps1 / $env:CI:'' > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../apps/scheduler/build.ps1 } | Invoke-Block > > ── [ 4.73m - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "Tasks.dib", "--retries", "3"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/apps/scheduler/Tasks.dib", "--output-path", > "c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb"]; options = { command = > dotnet repl --exit-after-run --run > "c:/home/git/polyglot/apps/scheduler/Tasks.dib" --output-path > "c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb"; cancellation_token = > None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), > ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; > working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## Tasks (Polyglot) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > open testing > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## task_name > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > nominal task_name = string > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## manual_scheduling > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > union manual_scheduling = > │ > | WithSuggestion > │ > | WithoutSuggestion > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## recurrency_offset > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > union recurrency_offset = > │ > | Days : i32 > │ > | Weeks : i32 > │ > | Months : i32 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## day_of_week > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > union day_of_week = > │ > | Sunday > │ > | Monday > │ > | Tuesday > │ > | Wednesday > │ > | Thursday > │ > | Friday > │ > | Saturday > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## month > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > union month = > │ > | January > │ > | February > │ > | March > │ > | April > │ > | May > │ > | June > │ > | July > │ > | August > │ > | September > │ > | October > │ > | November > │ > | December > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## day > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > nominal day = i32 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## year > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > nominal year = i32 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## fixed_recurrency > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > union fixed_recurrency = > │ > | Weekly : day_of_week > │ > | Monthly : day > │ > | Yearly : day * month > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## recurrency > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > union recurrency = > │ > | Offset : recurrency_offset > │ > | Fixed : list fixed_recurrency > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## scheduling > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > union scheduling = > │ > | Manual : manual_scheduling > │ > | Recurrent : recurrency > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## task > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > type task = > │ > { > │ > name : task_name > │ > scheduling : scheduling > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## date > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > type date = > │ > { > │ > year : year > │ > month : month > │ > day : day > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## status > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > union status = > │ > | Postponed : option () > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## event > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > type event = > │ > { > │ > date : date > │ > status : status > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## task_template > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > type task_template = > │ > { > │ > task : task > │ > events : list event > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## get_tasks (test) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > inl get_tasks () : list task_template = > │ > [[ > │ > { > │ > task = > │ > { > │ > name = task_name "01" > │ > scheduling = Manual WithSuggestion > │ > } > │ > events = [[]] > │ > } > │ > { > │ > task = > │ > { > │ > name = task_name "02" > │ > scheduling = Manual WithSuggestion > │ > } > │ > events = [[]] > │ > } > │ > { > │ > task = > │ > { > │ > name = task_name "03" > │ > scheduling = Manual WithSuggestion > │ > } > │ > events = [[]] > │ > } > │ > ]] > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! fsharp > │ > ///! cuda > │ > ///! rust > │ > ///! typescript > │ > ///! python > │ > > │ > get_tasks () > │ > |> sm'.format_debug > │ > |> _assert sm'.contains "01" > │ > > │ > ── [ 2.73m - return value ] > ──────────────────────────────────────────────────── > │ > │ .py output (Cuda): > │ > │ { name = __assert; actual = 01; expected > = UH2_1(v0='01', > │ > v1=US1_0(v0=US0_0()), v2=UH1_0(), v3=UH2_1(v0='02', > v1=US1_0(v0=US0_0()), > │ > v2=UH1_0(), v3=UH2_1(v0='03', v1=US1_0(v0=US0_0()), > v2=UH1_0(), v3=UH2_0()))) } > │ > │ > │ > │ .rs output: > │ > │ { name = __assert; actual = 01; expected > = UH2_1("01", > │ > US1_0(US0_0), UH1_0, UH2_1("02", US1_0(US0_0), UH1_0, > UH2_1("03", US1_0(US0_0), > │ > UH1_0, UH2_0))) } > │ > │ > │ > │ .ts output: > │ > │ { name = __assert; actual = 01; expected > = UH2_1 (01, US1_0 > │ > US0_0, UH1_0, UH2_1 (02, US1_0 US0_0, UH1_0, UH2_1 (03, > US1_0 US0_0, UH1_0, > │ > UH2_0))) } > │ > │ > │ > │ .py output: > │ > │ { name = __assert; actual = 01; expected > = UH2_1 ("01", US1_0 > │ > US0_0, UH1_0, UH2_1 ("02", US1_0 US0_0, UH1_0, UH2_1 ("03", > US1_0 US0_0, UH1_0, > │ > UH2_0))) } > │ > │ > │ > │ > │ > > │ > ── [ 2.73m - stdout ] > ────────────────────────────────────────────────────────── > │ > │ .fsx output: > │ > │ { name = __assert; actual = 01; expected > = UH2_1 > │ > │ ("01", US1_0 US0_0, UH1_0, > │ > │ UH2_1 ("02", US1_0 US0_0, UH1_0, > UH2_1 ("03", US1_0 US0_0, > │ > UH1_0, UH2_0))) } > │ > │ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! fsharp > │ > ///! cuda > │ > ///! rust > │ > ///! typescript > │ > ///! python > │ > > │ > get_tasks () > │ > |> listm'.try_item 0i32 > │ > |> fun (Some task) => task.task.name > │ > |> _assert_eq (task_name "01") > │ > > │ > ── [ 1.73m - return value ] > ──────────────────────────────────────────────────── > │ > │ .py output (Cuda): > │ > │ { name = __assert_eq; actual = 01; > expected = 01 } > │ > │ > │ > │ .rs output: > │ > │ { name = __assert_eq; actual = "01"; > expected = "01" } > │ > │ > │ > │ .ts output: > │ > │ { name = __assert_eq; actual = 01; > expected = 01 } > │ > │ > │ > │ .py output: > │ > │ { name = __assert_eq; actual = 01; > expected = 01 } > │ > │ > │ > │ > │ > > │ > ── [ 1.73m - stdout ] > ────────────────────────────────────────────────────────── > │ > │ .fsx output: > │ > │ { name = __assert_eq; actual = "01"; > expected = "01" } > │ > │ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! fsharp > │ > ////! cuda > │ > ////! typescript > │ > ////! python > │ > ///// print_code > │ > > │ > inl print padding cols = > │ > ({ lines = [[]]; last_lines = [[]]; max_acc = 0i32 }, > cols) > │ > ||> listm.fold fun { last_lines max_acc } lines => > │ > inl { count max } = > │ > (lines, { count = 0i32; max = 0i32 }) > │ > ||> listm.foldBack fun line { count max } => { > │ > count = count + 1 > │ > max = > │ > inl len = line |> sm'.length > │ > if len > max > │ > then len > │ > else max > │ > } > │ > inl { lines } = > │ > (lines, { lines = [[]]; i = 0i32 }) > │ > ||> listm.foldBack fun line { lines i } => { > │ > lines = > │ > inl last_line = > │ > last_lines > │ > |> listm'.try_item (count - i - 1) > │ > |> optionm'.default_with fun () => > │ > " " |> sm'.replicate max_acc > │ > inl line = > │ > if padding = 0 > │ > then line > │ > else > │ > inl padding = " " |> > sm'.replicate padding > │ > $'$"{!line}{!padding}"' > │ > inl line = line |> sm'.pad_right (max + > padding) ' ' > │ > $'$"{!last_line}{!line}"' :: lines > │ > i = i + 1 > │ > } > │ > { > │ > lines > │ > last_lines = lines > │ > max_acc = max_acc + max + padding > │ > } > │ > |> fun x => x.lines > │ > |> listm'.box > │ > |> seq.of_list' > │ > |> sm'.concat "\n" > │ > > │ > inl col () = > │ > [[ "Task" ]] > │ > ++ ( > │ > get_tasks () > │ > |> listm.map fun task => > │ > inl (task_name name) = task.task.name > │ > name > │ > ) > │ > > │ > inl cols () = > │ > [[ > │ > col () > │ > col () > │ > [[ "a"; "b"; "c"; "d"; "e" ]] > │ > ]] > │ > > │ > inl main () = > │ > cols () > │ > |> print 1i32 > │ > |> console.write_line > │ > > │ > ── [ 359.65ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ Task Task a > │ > │ 01 01 b > │ > │ 02 02 c > │ > │ 03 03 d > │ > │ e > │ > │ > │ 00:04:40 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 10383 } > │ 00:04:40 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb", "--to", "html", > "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:04:41 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/apps/scheduler/Tasks.dib.ipynb to html > │ 00:04:41 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:04:41 v #7 ! validate(nb) > │ 00:04:42 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:04:42 v #9 ! return _pygments_highlight( > │ 00:04:42 v #10 ! [NbConvertApp] Writing 310021 bytes to > c:\home\git\polyglot\apps\scheduler\Tasks.dib.html > │ 00:04:42 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 860 } > │ 00:04:42 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 860 } > │ 00:04:42 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/apps/scheduler/Tasks.dib.html'; (Get-Content $path -Raw) > -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } > | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = > 'c:/home/git/polyglot/apps/scheduler/Tasks.dib.html'; (Get-Content $path -Raw) > -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | > Set-Content $path"; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:04:42 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:04:42 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:04:42 d #16 spiral.run / dib / { exit_code = 0; > result_length = 11302 } > │ 00:00:00 d #1 writeDibCode / output: Spi / path: > Tasks.dib > │ 00:00:00 d #2 parseDibCode / output: Spi / file: > Tasks.dib > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../apps/chat/build.ps1 } | Invoke-Block > > ── [ 22.17m - stdout ] ───────────────────────────────────────────────────────── > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "chat_contract.dib", "--retries", "1"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib", "--output-path", > "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb"]; options = { > command = dotnet repl --exit-after-run --run > "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib" --output-path > "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb"; > cancellation_token = None; environment_variables = > Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = > None; stdin = None; trace = false; working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # chat_contract > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > open rust > │ > open rust.rust_operators > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > open testing > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## chat_contract > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### state > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > type state = > │ > { > │ > version : u32 > │ > account_set : near.iterable_set near.account_id > │ > alias_set : near.iterable_set sm'.std_string > │ > account_map : near.lookup_map near.account_id > sm'.std_string > │ > alias_map : near.lookup_map sm'.std_string > (mapm.hash_map > │ > near.account_id (u64 * u32)) > │ > } > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -c > │ > > │ > () > │ > > │ > ── [ 54.66s - return value ] > ─────────────────────────────────────────────────── > │ > │ Installed near-sandbox into > │ > > /mnt/c/home/git/spiral/workspace/target/release/build/near-sandbox-utils-cdf556a > │ > > 7364ec456/out/.near/near-sandbox-1.40.0_7dd0b5993577f592be15eb102e5a3da37be66271 > │ > /near-sandbox > │ > │ > │ > │ 00:00:15 i #2 > near_workspaces.print_usd / { retry = 1; > │ > total_gas_burnt_usd = +0.000957; total_gas_burnt = > 1432554003351 } > │ > │ 00:00:15 i #3 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:15 i #4 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000602; > tokens_burnt_usd = +0.000602; > │ > gas_burnt = 901289581511; tokens_burnt = > 90128958151100000000 } > │ > │ 00:00:15 i #5 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000149; > tokens_burnt_usd = +0.000000; > │ > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > │ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -c > │ > > │ > trace Verbose (fun () => "") id > │ > > │ > ── [ 30.61s - return value ] > ─────────────────────────────────────────────────── > │ > │ > │ > │ 00:00:09 i #2 > near_workspaces.print_usd / { retry = 1; > │ > total_gas_burnt_usd = +0.000884; total_gas_burnt = > 1323849918887 } > │ > │ 00:00:09 i #3 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:09 i #4 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000679; > tokens_burnt_usd = +0.000679; > │ > gas_burnt = 1015768059547; tokens_burnt = > 101576805954700000000 } > │ > │ 00:00:09 w #5 spiral_wasm.run / > Error error / { retry = > │ > 1; error = "{ receipt_outcomes_len = 1; retry = 1; > receipt_failures = [] }" } > │ > │ > │ > │ > │ > │ > │ > │ 00:00:16 i #8 > near_workspaces.print_usd / { retry = 2; > │ > total_gas_burnt_usd = +0.001033; total_gas_burnt = > 1547032481387 } > │ > │ 00:00:16 i #9 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:16 i #10 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000679; > tokens_burnt_usd = +0.000679; > │ > gas_burnt = 1015768059547; tokens_burnt = > 101576805954700000000 } > │ > │ 00:00:16 i #11 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000149; > tokens_burnt_usd = +0.000000; > │ > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### new > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl new () : state = > │ > { > │ > version = 2 > │ > account_set = "account_set" |> sm'.byte_slice |> > near.new_iterable_set > │ > alias_set = "alias_set" |> sm'.byte_slice |> > near.new_iterable_set > │ > account_map = "account_map" |> sm'.byte_slice |> > near.new_lookup_map > │ > alias_map = "alias_map" |> sm'.byte_slice |> > near.new_lookup_map > │ > } > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -c > │ > > │ > inl state = new () > │ > trace Verbose (fun () => "chat_contract") fun () => { state > = state |> > │ > sm'.format_debug } > │ > trace Verbose (fun () => "") id > │ > > │ > ── [ 25.96s - return value ] > ─────────────────────────────────────────────────── > │ > │ 00:00:00 v #1 chat_contract / { > state = (2, IterableSet > │ > { elements: Vector { len: 0, prefix: [97, 99, 99, 111, 117, > 110, 116, 95, 115, > │ > 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, > 111, 117, 110, 116, > │ > 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector > { len: 0, prefix: > │ > [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: > LookupMap { prefix: > │ > [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, > LookupMap { prefix: [97, > │ > 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap > { prefix: [97, 108, > │ > 105, 97, 115, 95, 109, 97, 112] }) } > │ > │ > │ > │ 00:00:07 i #2 > near_workspaces.print_usd / { retry = 1; > │ > total_gas_burnt_usd = +0.001560; total_gas_burnt = > 2335604125612 } > │ > │ 00:00:07 i #3 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:07 i #4 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.001205; > tokens_burnt_usd = +0.001205; > │ > gas_burnt = 1804339703772; tokens_burnt = > 180433970377200000000 } > │ > │ 00:00:07 i #5 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000149; > tokens_burnt_usd = +0.000000; > │ > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### is_valid_alias > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl is_valid_alias (alias : sm'.std_string) : bool = > │ > inl alias' = alias |> sm'.from_std_string > │ > inl alias_len = alias' |> sm'.length > │ > > │ > alias_len > 0i32 > │ > && alias_len < 64 > │ > && (alias' |> sm'.starts_with "-" |> not) > │ > && (alias' |> sm'.ends_with "-" |> not) > │ > && (alias' |> sm'.as_str |> sm'.chars |> iter.all > (fun c => (c |> > │ > sm'.char_is_alphanumeric) || c = '-')) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -c > │ > > │ > "" > │ > |> sm'.to_std_string > │ > |> is_valid_alias > │ > |> _assert_eq false > │ > > │ > ── [ 28.02s - return value ] > ─────────────────────────────────────────────────── > │ > │ > │ > │ 00:00:06 i #2 > near_workspaces.print_usd / { retry = 1; > │ > total_gas_burnt_usd = +0.000862; total_gas_burnt = > 1290977563408 } > │ > │ 00:00:06 i #3 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:06 i #4 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000657; > tokens_burnt_usd = +0.000657; > │ > gas_burnt = 982895704068; tokens_burnt = > 98289570406800000000 } > │ > │ 00:00:06 w #5 spiral_wasm.run / > Error error / { retry = > │ > 1; error = "{ receipt_outcomes_len = 1; retry = 1; > receipt_failures = [] }" } > │ > │ > │ > │ > │ > │ > │ > │ 00:00:13 i #8 > near_workspaces.print_usd / { retry = 2; > │ > total_gas_burnt_usd = +0.001011; total_gas_burnt = > 1514160125908 } > │ > │ 00:00:13 i #9 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:13 i #10 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000657; > tokens_burnt_usd = +0.000657; > │ > gas_burnt = 982895704068; tokens_burnt = > 98289570406800000000 } > │ > │ 00:00:13 i #11 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000149; > tokens_burnt_usd = +0.000000; > │ > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > │ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -c > │ > > │ > "a-" > │ > |> sm'.to_std_string > │ > |> is_valid_alias > │ > |> _assert_eq false > │ > > │ > ── [ 19.56s - return value ] > ─────────────────────────────────────────────────── > │ > │ > │ > │ 00:00:06 i #2 > near_workspaces.print_usd / { retry = 1; > │ > total_gas_burnt_usd = +0.001013; total_gas_burnt = > 1516165112863 } > │ > │ 00:00:06 i #3 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:06 i #4 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000658; > tokens_burnt_usd = +0.000658; > │ > gas_burnt = 984900691023; tokens_burnt = > 98490069102300000000 } > │ > │ 00:00:06 i #5 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000149; > tokens_burnt_usd = +0.000000; > │ > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > │ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -c > │ > > │ > "a-a" > │ > |> sm'.to_std_string > │ > |> is_valid_alias > │ > |> _assert_eq true > │ > > │ > ── [ 31.98s - return value ] > ─────────────────────────────────────────────────── > │ > │ > │ > │ 00:00:06 i #2 > near_workspaces.print_usd / { retry = 1; > │ > total_gas_burnt_usd = +0.000865; total_gas_burnt = > 1294414493769 } > │ > │ 00:00:06 i #3 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:06 i #4 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000659; > tokens_burnt_usd = +0.000659; > │ > gas_burnt = 986332634429; tokens_burnt = > 98633263442900000000 } > │ > │ 00:00:06 w #5 spiral_wasm.run / > Error error / { retry = > │ > 1; error = "{ receipt_outcomes_len = 1; retry = 1; > receipt_failures = [] }" } > │ > │ > │ > │ > │ > │ > │ > │ 00:00:13 i #8 > near_workspaces.print_usd / { retry = 2; > │ > total_gas_burnt_usd = +0.000865; total_gas_burnt = > 1294414493769 } > │ > │ 00:00:13 i #9 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:13 i #10 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000659; > tokens_burnt_usd = +0.000659; > │ > gas_burnt = 986332634429; tokens_burnt = > 98633263442900000000 } > │ > │ 00:00:13 w #11 spiral_wasm.run / > Error error / { retry > │ > = 2; error = "{ receipt_outcomes_len = 1; retry = 2; > receipt_failures = [] }" } > │ > │ > │ > │ > │ > │ > │ > │ 00:00:19 i #14 > near_workspaces.print_usd / { retry = 3; > │ > total_gas_burnt_usd = +0.001014; total_gas_burnt = > 1517597056269 } > │ > │ 00:00:19 i #15 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:19 i #16 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000659; > tokens_burnt_usd = +0.000659; > │ > gas_burnt = 986332634429; tokens_burnt = > 98633263442900000000 } > │ > │ 00:00:19 i #17 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000149; > tokens_burnt_usd = +0.000000; > │ > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### generate_cid > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl generate_cid (content : am'.vec u8) : sm'.std_string = > │ > !\($'" fn encode_u64(value: u64) -> Vec<u8> { //"') : > () > │ > !\($'" let mut buffer = > unsigned_varint::encode::u64_buffer(); //"') : () > │ > !\($'" unsigned_varint::encode::u64(value, &mut > buffer).to_vec() //"') : > │ > () > │ > !\($'" } //"') : () > │ > > │ > !\($'" fn sha256_hash(content: &[[u8]]) -> Vec<u8> { > //"') : () > │ > !\($'" let mut hasher: sha2::Sha256 = > sha2::Digest::new(); //"') : () > │ > !\($'" sha2::Digest::update(&mut hasher, content); > //"') : () > │ > !\($'" sha2::Digest::finalize(hasher).to_vec() //"') > : () > │ > !\($'" } //"') : () > │ > > │ > !\($'" let version: u8 = 1; //"') : () > │ > !\($'" let codec_raw: u64 = 0x55; //"') : () > │ > > │ > !\($'" let codec_bytes = encode_u64(codec_raw); //"') > : () > │ > !\($'" let hash_result = sha256_hash(&!content); //"') > : () > │ > !\($'" let multihash = std::iter::once(0x12) //"') : > () > │ > !\($'" .chain(std::iter::once(32)) //"') : () > │ > !\($'" .chain(hash_result.into_iter()) //"') : () > │ > !\($'" .collect(); //"') : () > │ > !\($'" let cid_bytes = [[vec\![[version]], > codec_bytes, > │ > multihash]].concat(); //"') : () > │ > !\($'" let result = > multibase::encode(multibase::Base::Base32Lower, > │ > &cid_bytes); //"') : () > │ > !\($'"result"') > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -c -d multibase sha2 unsigned-varint > │ > > │ > ;[[]] > │ > |> am'.to_vec > │ > |> generate_cid > │ > |> sm'.from_std_string > │ > |> _assert_eq > "bafkreihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku" > │ > > │ > ── [ 26.93s - return value ] > ─────────────────────────────────────────────────── > │ > │ > │ > │ 00:00:06 i #2 > near_workspaces.print_usd / { retry = 1; > │ > total_gas_burnt_usd = +0.001078; total_gas_burnt = > 1613196914267 } > │ > │ 00:00:06 i #3 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:06 i #4 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000723; > tokens_burnt_usd = +0.000723; > │ > gas_burnt = 1081932492427; tokens_burnt = > 108193249242700000000 } > │ > │ 00:00:06 i #5 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000149; > tokens_burnt_usd = +0.000000; > │ > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### claim_alias > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl claim_alias (state : rust.ref (rust.mut' state)) (alias > : sm'.std_string) : > │ > () = > │ > inl account_set : rust.ref (rust.mut' > (near.iterable_set near.account_id)) = > │ > !\($'$"&mut !state.1"') > │ > > │ > inl alias_set : rust.ref (rust.mut' (near.iterable_set > sm'.std_string)) = > │ > !\($'$"&mut !state.2"') > │ > > │ > inl account_map : rust.ref (rust.mut' (near.lookup_map > near.account_id > │ > sm'.std_string)) = > │ > !\($'$"&mut !state.3"') > │ > > │ > inl alias_map : rust.ref (rust.mut' (near.lookup_map > sm'.std_string > │ > (mapm.hash_map near.account_id (u64 * u32)))) = > │ > !\($'$"&mut !state.4"') > │ > > │ > inl signer_account_id = near.signer_account_id () > │ > inl predecessor_account_id = > near.predecessor_account_id () > │ > inl block_timestamp = near.block_timestamp () > │ > > │ > trace Debug > │ > fun () => "chat_contract.claim_alias" > │ > fun () => { > │ > alias > │ > block_timestamp > │ > signer_account_id = signer_account_id |> > sm'.to_string' > │ > predecessor_account_id = predecessor_account_id > |> sm'.to_string' > │ > } > │ > > │ > if alias |> is_valid_alias |> not > │ > then near.panic_str "chat_contract.claim_alias / > invalid alias" . true > │ > else false > │ > |> ignore > │ > > │ > inl account_alias = > │ > account_map > │ > |> near.lookup_get signer_account_id > │ > |> optionm'.cloned > │ > > │ > match account_alias |> optionm'.unbox with > │ > | Some account_alias when account_alias =. alias => > │ > trace Warning > │ > fun () => "chat_contract.claim_alias / alias > already claimed" > │ > fun () => { account_alias = account_alias |> > sm'.format_debug } > │ > | account_alias' => > │ > trace Debug > │ > fun () => "chat_contract.claim_alias" > │ > fun () => { account_alias = account_alias |> > sm'.format_debug } > │ > > │ > match account_alias' with > │ > | Some account_alias => > │ > !\($'" !alias_map //"') : () > │ > !\($'" .get_mut(&!account_alias) //"') : > () > │ > !\($'" .unwrap() //"') : () > │ > !\\(signer_account_id, $'" .remove(&$0); > //"') : () > │ > | None => () > │ > > │ > !\\((signer_account_id, alias), $'" > !account_map.insert($0.clone(), > │ > $1.clone()); //"') : () > │ > > │ > account_set |> near.iterable_set_insert > signer_account_id |> ignore > │ > alias_set |> near.iterable_set_insert alias |> > ignore > │ > > │ > !\\(alias, $'" let new_alias_account_map = match > !alias_map.get(&$0) { > │ > //"') : () > │ > !\($'" None => { //"') : () > │ > !\($'" let mut new_map = > std::collections::HashMap::new(); //"') : > │ > () > │ > !\\((signer_account_id, block_timestamp), $'" > new_map.insert($0, > │ > ($1, 0u32)); //"') : () > │ > !\($'" new_map //"') : () > │ > !\($'" } //"') : () > │ > !\($'" Some(accounts) => { //"') : () > │ > !\($'" let mut accounts_vec = > accounts.iter().collect::<Vec<_>>(); > │ > //"') : () > │ > !\($'" accounts_vec.sort_unstable_by_key(|(_, > (_, index))| index); > │ > //"') : () > │ > !\($'" let mut new_map = accounts_vec //"') : > () > │ > !\($'" .iter() //"') : () > │ > !\($'" .enumerate() //"') : () > │ > !\($'" .map(|(i, (signer_account_id, > (timestamp, _)))| { //"') : > │ > () > │ > !\($'" ((*signer_account_id).clone(), > (*timestamp, i as u32)) > │ > //"') : () > │ > !\($'" }) //"') : () > │ > !\($'" > .collect::<std::collections::HashMap<_, _>>(); //"') : () > │ > !\\(signer_account_id, $'" new_map.insert($0, > (!block_timestamp, > │ > accounts_vec.len() as u32)); //"') : () > │ > !\($'" new_map //"') : () > │ > !\($'" } //"') : () > │ > !\($'" }; //"') : () > │ > > │ > !\\(alias, $'" !alias_map.insert($0, > new_alias_account_map); //"') : () > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -c > │ > > │ > inl state = new () > │ > inl version = state.version > │ > inl account_set = state.account_set > │ > inl alias_set = state.alias_set > │ > inl account_map = state.account_map > │ > inl alias_map = state.alias_map > │ > inl version = join version > │ > inl account_set = join account_set > │ > inl alias_set = join alias_set > │ > inl account_map = join account_map > │ > inl alias_map = join alias_map > │ > inl state : rust.ref (rust.mut' state) = > │ > !\\( > │ > version, > │ > $'$"&mut ($0, !account_set, !alias_set, > !account_map, !alias_map)"' > │ > ) > │ > > │ > "alias1" > │ > |> sm'.to_std_string > │ > |> claim_alias state > │ > > │ > trace Verbose > │ > fun () => "chat_contract" > │ > fun () => { state = state |> sm'.format_debug } > │ > > │ > trace Debug (fun () => "") id > │ > > │ > ── [ 27.66s - return value ] > ─────────────────────────────────────────────────── > │ > │ 00:00:00 d #1 > chat_contract.claim_alias / { alias = > │ > "alias1"; block_timestamp = 1743242761424207030; > signer_account_id = > │ > "dev-20250329100600-35651397364500"; predecessor_account_id > = > │ > "dev-20250329100600-35651397364500" } > │ > │ 00:00:00 d #2 > chat_contract.claim_alias / { > │ > account_alias = None } > │ > │ 00:00:00 v #3 chat_contract / { > state = (2, IterableSet > │ > { elements: Vector { len: 1, prefix: [97, 99, 99, 111, 117, > 110, 116, 95, 115, > │ > 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, > 111, 117, 110, 116, > │ > 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector > { len: 1, prefix: > │ > [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: > LookupMap { prefix: > │ > [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, > LookupMap { prefix: [97, > │ > 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap > { prefix: [97, 108, > │ > 105, 97, 115, 95, 109, 97, 112] }) } > │ > │ > │ > │ 00:00:07 i #2 > near_workspaces.print_usd / { retry = 1; > │ > total_gas_burnt_usd = +0.002873; total_gas_burnt = > 4301187134708 } > │ > │ 00:00:07 i #3 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:07 i #4 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.002518; > tokens_burnt_usd = +0.002518; > │ > gas_burnt = 3769922712868; tokens_burnt = > 376992271286800000000 } > │ > │ 00:00:07 i #5 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000149; > tokens_burnt_usd = +0.000000; > │ > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > │ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust \"-c=-e=\\\"chat_contract.claim_alias / invalid > alias\\\"\" > │ > > │ > "" > │ > |> sm'.to_std_string > │ > |> claim_alias ( > │ > inl state = new () > │ > inl version = state.version > │ > inl account_set = state.account_set > │ > inl alias_set = state.alias_set > │ > inl account_map = state.account_map > │ > inl alias_map = state.alias_map > │ > !\\(version, $'$"&mut ($0, !account_set, !alias_set, > !account_map, > │ > !alias_map)"') > │ > ) > │ > trace Debug (fun () => "") id > │ > > │ > ── [ 27.72s - return value ] > ─────────────────────────────────────────────────── > │ > │ > │ > │ 00:00:07 i #2 > near_workspaces.print_usd / { retry = 1; > │ > total_gas_burnt_usd = +0.001356; total_gas_burnt = > 2029436115017 } > │ > │ 00:00:07 i #3 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:07 i #4 > near_workspaces.print_usd / outcome / { > │ > is_success = false; gas_burnt_usd = +0.001001; > tokens_burnt_usd = +0.001001; > │ > gas_burnt = 1498171693177; tokens_burnt = > 149817169317700000000 } > │ > │ 00:00:07 i #5 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000149; > tokens_burnt_usd = +0.000000; > │ > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > │ 00:00:07 c #6 spiral_wasm.run / Ok > (Some error) / { > │ > retry = 1; error = { receipt_outcomes_len = 2; retry = 1; > receipt_failures = [ > │ > │ ExecutionOutcome { > │ > │ transaction_hash: > │ > AK92WwW3yMVop4bdMBttA184BpfizBSuch74MPfeHm3r, > │ > │ block_hash: > │ > 5Tefj95jFd9Xfm6x3kL9BjnTMbYacFXwc6i5TdbVn9wa, > │ > │ logs: [], > │ > │ receipt_ids: [ > │ > │ > JAkMZq8P8w7MHiirYucnAJZx53fEVNvy2eQEmf7qq4ym, > │ > │ ], > │ > │ gas_burnt: NearGas { > │ > │ inner: 1498171693177, > │ > │ }, > │ > │ tokens_burnt: NearToken { > │ > │ inner: > 149817169317700000000, > │ > │ }, > │ > │ executor_id: AccountId( > │ > │ > "dev-20250329100627-50387024011150", > │ > │ ), > │ > │ status: > Failure(ActionError(ActionError { index: > │ > Some(0), kind: FunctionCallError(ExecutionError("Smart > contract panicked: > │ > chat_contract.claim_alias / invalid alias")) })), > │ > │ }, > │ > │ ] } } > │ > │ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -cd borsh > │ > > │ > inl state' = new () > │ > inl state = state' > │ > inl version = state.version > │ > inl account_set = state.account_set > │ > inl alias_set = state.alias_set > │ > inl account_map = state.account_map > │ > inl alias_map = state.alias_map > │ > inl version = join version > │ > inl account_set = join account_set > │ > inl alias_set = join alias_set > │ > inl account_map = join account_map > │ > inl alias_map = join alias_map > │ > > │ > inl state = > │ > !\\( > │ > (version, account_set, alias_set), > │ > $'$"&mut ($0, $1, $2, !account_map, !alias_map)"' > │ > ) > │ > > │ > "alias1" > │ > |> sm'.to_std_string > │ > |> claim_alias state > │ > > │ > "alias1" > │ > |> sm'.to_std_string > │ > |> claim_alias state > │ > > │ > "alias1" > │ > |> sm'.to_std_string > │ > |> claim_alias state > │ > > │ > inl account_set' : rust.ref (near.iterable_set > near.account_id) = > │ > !\($'$"&!state.1"') > │ > > │ > inl alias_set' : rust.ref (near.iterable_set > sm'.std_string) = > │ > !\($'$"&!state.2"') > │ > > │ > inl account_set' = > │ > account_set' > │ > |> iter.iter_ref'' > │ > |> iter.cloned > │ > |> iter_collect > │ > > │ > inl alias_set' = > │ > alias_set' > │ > |> iter.iter_ref'' > │ > |> iter.cloned > │ > |> iter_collect > │ > |> am'.vec_map sm'.from_std_string > │ > > │ > trace Verbose > │ > fun () => "chat_contract" > │ > fun () => { > │ > account_set' = account_set' |> sm'.format_debug > │ > alias_set' = alias_set' |> sm'.format_debug > │ > state = state |> sm'.format_debug > │ > } > │ > > │ > trace Debug (fun () => "") id > │ > > │ > account_set' > │ > |> am'.vec_len > │ > |> convert > │ > |> _assert_eq 1u32 > │ > > │ > alias_set' > │ > |> am'.from_vec_base > │ > |> _assert_eq' ;[[ "alias1" ]] > │ > > │ > ── [ 29.14s - return value ] > ─────────────────────────────────────────────────── > │ > │ 00:00:00 d #1 > chat_contract.claim_alias / { alias = > │ > "alias1"; block_timestamp = 1743242818330690235; > signer_account_id = > │ > "dev-20250329100657-54259456378233"; predecessor_account_id > = > │ > "dev-20250329100657-54259456378233" } > │ > │ 00:00:00 d #2 > chat_contract.claim_alias / { > │ > account_alias = None } > │ > │ 00:00:00 d #3 > chat_contract.claim_alias / { alias = > │ > "alias1"; block_timestamp = 1743242818330690235; > signer_account_id = > │ > "dev-20250329100657-54259456378233"; predecessor_account_id > = > │ > "dev-20250329100657-54259456378233" } > │ > │ 00:00:00 d #4 > chat_contract.claim_alias / { > │ > account_alias = Some("alias1") } > │ > │ 00:00:00 d #5 > chat_contract.claim_alias / { alias = > │ > "alias1"; block_timestamp = 1743242818330690235; > signer_account_id = > │ > "dev-20250329100657-54259456378233"; predecessor_account_id > = > │ > "dev-20250329100657-54259456378233" } > │ > │ 00:00:00 d #6 > chat_contract.claim_alias / { > │ > account_alias = Some("alias1") } > │ > │ 00:00:00 v #7 chat_contract / { > account_set' = > │ > [AccountId("dev-20250329100657-54259456378233")]; > alias_set' = ["alias1"]; state > │ > = (2, IterableSet { elements: Vector { len: 1, prefix: [97, > 99, 99, 111, 117, > │ > 110, 116, 95, 115, 101, 116, 118] }, index: LookupMap { > prefix: [97, 99, 99, > │ > 111, 117, 110, 116, 95, 115, 101, 116, 109] } }, > IterableSet { elements: Vector > │ > { len: 1, prefix: [97, 108, 105, 97, 115, 95, 115, 101, > 116, 118] }, index: > │ > LookupMap { prefix: [97, 108, 105, 97, 115, 95, 115, 101, > 116, 109] } }, > │ > LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 95, > 109, 97, 112] }, > │ > LookupMap { prefix: [97, 108, 105, 97, 115, 95, 109, 97, > 112] }) } > │ > │ > │ > │ 00:00:06 i #2 > near_workspaces.print_usd / { retry = 1; > │ > total_gas_burnt_usd = +0.005125; total_gas_burnt = > 7671482023133 } > │ > │ 00:00:06 i #3 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:06 i #4 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.004770; > tokens_burnt_usd = +0.004770; > │ > gas_burnt = 7140217601293; tokens_burnt = > 714021760129300000000 } > │ > │ 00:00:06 i #5 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000149; > tokens_burnt_usd = +0.000000; > │ > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### get_account_info > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl get_account_info > │ > (state : rust.ref state) > │ > (account_id : near.account_id) > │ > : optionm'.option' (sm'.std_string * (u64 * u32)) > │ > = > │ > inl account_map : rust.ref (near.lookup_map > near.account_id sm'.std_string) > │ > = > │ > !\($'$"&!state.3"') > │ > > │ > inl alias_map : rust.ref (near.lookup_map > sm'.std_string (mapm.hash_map > │ > near.account_id (u64 * u32))) = > │ > !\($'$"&!state.4"') > │ > > │ > (!\\(account_id, $'"true; let result = > │ > !account_map.get(&$0).and_then(|alias| { //"') : bool) |> > ignore > │ > (!\($'"true; !alias_map.get(alias).map(|accounts| { > //"') : bool) |> > │ > ignore > │ > (!\($'"true; let result = (alias.clone(), > │ > *accounts.get(&!account_id).unwrap()); //"') : bool) |> > ignore > │ > (!\($'"true; (result.0, result.1.0, result.1.1) > }) }); //"') : bool) > │ > |> ignore > │ > > │ > inl result = !\($'"result"') > │ > > │ > trace Debug > │ > fun () => "chat_contract.get_account_info" > │ > fun () => { account_id result } > │ > > │ > trace Debug (fun () => "") id > │ > > │ > result > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! rust -cd borsh > │ > > │ > inl state' = new () > │ > inl state = state' > │ > inl version = state.version > │ > inl account_set = state.account_set > │ > inl alias_set = state.alias_set > │ > inl account_map = state.account_map > │ > inl alias_map = state.alias_map > │ > inl version = join version > │ > inl account_set = join account_set > │ > inl alias_set = join alias_set > │ > inl account_map = join account_map > │ > inl alias_map = join alias_map > │ > > │ > inl state_ref_mut = > │ > !\\( > │ > version, > │ > $'$"&mut ($0, !account_set, !alias_set, > !account_map, !alias_map)"' > │ > ) > │ > > │ > inl state_ref = !\($'$"!state_ref_mut"') > │ > near.predecessor_account_id () > │ > |> get_account_info state_ref > │ > |> _assert_eq' (optionm'.none' ()) > │ > > │ > inl state_ref = !\($'$"!state_ref_mut"') > │ > near.signer_account_id () > │ > |> get_account_info state_ref > │ > |> _assert_eq' (optionm'.none' ()) > │ > > │ > "alias1" > │ > |> sm'.to_std_string > │ > |> claim_alias state_ref_mut > │ > > │ > inl state_ref = !\($'$"!state_ref_mut"') > │ > near.predecessor_account_id () > │ > |> get_account_info state_ref > │ > |> optionm'.get' > │ > |> fun alias, (timestamp, i) => > │ > alias > │ > |> sm'.from_std_string > │ > |> _assert_eq "alias1" > │ > > │ > timestamp > │ > |> _assert_gt 0 > │ > > │ > i > │ > |> _assert_eq 0 > │ > > │ > inl state_ref = !\($'$"!state_ref_mut"') > │ > near.signer_account_id () > │ > |> get_account_info state_ref > │ > |> optionm'.get' > │ > |> fun alias, (timestamp, i) => > │ > alias > │ > |> sm'.from_std_string > │ > |> _assert_eq "alias1" > │ > > │ > timestamp > │ > |> _assert_gt 0 > │ > > │ > i > │ > |> _assert_eq 0 > │ > > │ > ── [ 47.55s - return value ] > ─────────────────────────────────────────────────── > │ > │ 00:00:00 d #1 > chat_contract.get_account_info / { > │ > account_id = AccountId( > │ > │ "dev-20250329100726-86459685069904", > │ > │ ); result = None } > │ > │ 00:00:00 d #3 > chat_contract.get_account_info / { > │ > account_id = AccountId( > │ > │ "dev-20250329100726-86459685069904", > │ > │ ); result = None } > │ > │ 00:00:00 d #5 > chat_contract.claim_alias / { alias = > │ > "alias1"; block_timestamp = 1743242847992038042; > signer_account_id = > │ > "dev-20250329100726-86459685069904"; predecessor_account_id > = > │ > "dev-20250329100726-86459685069904" } > │ > │ 00:00:00 d #6 > chat_contract.claim_alias / { > │ > account_alias = None } > │ > │ 00:00:00 d #7 > chat_contract.get_account_info / { > │ > account_id = AccountId( > │ > │ "dev-20250329100726-86459685069904", > │ > │ ); result = Some( > │ > │ ( > │ > │ "alias1", > │ > │ 1743242847992038042, > │ > │ 0, > │ > │ ), > │ > │ ) } > │ > │ 00:00:00 d #9 > chat_contract.get_account_info / { > │ > account_id = AccountId( > │ > │ "dev-20250329100726-86459685069904", > │ > │ ); result = Some( > │ > │ ( > │ > │ "alias1", > │ > │ 1743242847992038042, > │ > │ 0, > │ > │ ), > │ > │ ) } > │ > │ > │ > │ 00:00:06 i #2 > near_workspaces.print_usd / { retry = 1; > │ > total_gas_burnt_usd = +0.003945; total_gas_burnt = > 5905278313046 } > │ > │ 00:00:06 i #3 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:06 i #4 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.003739; > tokens_burnt_usd = +0.0...608", > │ > │ ); result = None } > │ > │ 00:00:00 d #5 > chat_contract.claim_alias / { alias = > │ > "alias1"; block_timestamp = 1743242866078477838; > signer_account_id = > │ > "dev-20250329100744-64446844898608"; predecessor_account_id > = > │ > "dev-20250329100744-64446844898608" } > │ > │ 00:00:00 d #6 > chat_contract.claim_alias / { > │ > account_alias = None } > │ > │ 00:00:00 d #7 > chat_contract.get_account_info / { > │ > account_id = AccountId( > │ > │ "dev-20250329100744-64446844898608", > │ > │ ); result = Some( > │ > │ ( > │ > │ "alias1", > │ > │ 1743242866078477838, > │ > │ 0, > │ > │ ), > │ > │ ) } > │ > │ 00:00:00 d #9 > chat_contract.get_account_info / { > │ > account_id = AccountId( > │ > │ "dev-20250329100744-64446844898608", > │ > │ ); result = Some( > │ > │ ( > │ > │ "alias1", > │ > │ 1743242866078477838, > │ > │ 0, > │ > │ ), > │ > │ ) } > │ > │ > │ > │ 00:00:25 i #20 > near_workspaces.print_usd / { retry = 4; > │ > total_gas_burnt_usd = +0.004094; total_gas_burnt = > 6128460875546 } > │ > │ 00:00:25 i #21 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000206; > tokens_burnt_usd = +0.000206; > │ > gas_burnt = 308081859340; tokens_burnt = > 30808185934000000000 } > │ > │ 00:00:25 i #22 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.003739; > tokens_burnt_usd = +0.003739; > │ > gas_burnt = 5597196453706; tokens_burnt = > 559719645370600000000 } > │ > │ 00:00:25 i #23 > near_workspaces.print_usd / outcome / { > │ > is_success = true; gas_burnt_usd = +0.000149; > tokens_burnt_usd = +0.000000; > │ > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### main > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > ///! _ > │ > > │ > inl main () = > │ > !\($'"} //"') : () > │ > > │ > !\($'"#[[near_sdk::near_bindgen]] //"') : () > │ > > │ > !\($'"#[[derive( //"') : () > │ > !\($'" near_sdk::PanicOnDefault, //"') : () > │ > !\($'" borsh::BorshDeserialize, //"') : () > │ > !\($'" borsh::BorshSerialize, //"') : () > │ > !\($'")]] //"') : () > │ > > │ > !\($'"pub struct State ( //"') : () > │ > > │ > !\($'"/*"') : () > │ > (null () : rust.type_emit state) |> ignore > │ > !\($'"*/ )"') : () > │ > > │ > inl new_ () = > │ > !\($'"#[[init]] //"') : () > │ > !\($'"pub fn new() -> Self { // 1"') : () > │ > > │ > (!\($'"true; /*"') : bool) |> ignore > │ > > │ > (null () : rust.type_emit ()) |> ignore > │ > > │ > (!\($'"true; */"') : bool) |> ignore > │ > > │ > inl result = new () > │ > > │ > $'let _result = !result in _result |> (fun x -> > │ > Fable.Core.RustInterop.emitRustExpr x $"Self($0) // x") // > 2' : () > │ > > │ > !\($'"} // 2."') : () > │ > > │ > !\($'"} // 1."') : () > │ > > │ > 2 > │ > > │ > inl is_valid_alias () = > │ > !\($'"fn is_valid_alias(alias: String) -> bool { > //"') : () > │ > inl alias = !\($'$"alias"') > │ > inl result = alias |> is_valid_alias > │ > $'let _result = !result in _result |> (fun x -> > │ > Fable.Core.RustInterop.emitRustExpr x "$0 }") // 2' : () > │ > !\($'"} //"') : () > │ > 1 > │ > > │ > inl generate_cid () = > │ > !\($'"pub fn generate_cid( //"') : () > │ > !\($'" &self, //"') : () > │ > !\($'" content: Vec<u8>, //"') : () > │ > !\($'") -> String { //"') : () > │ > inl content = !\($'$"content"') > │ > inl result = generate_cid content > │ > $'let _result = !result in _result |> (fun x -> > │ > Fable.Core.RustInterop.emitRustExpr x "$0 }") // 2' : () > │ > !\($'"} //"') : () > │ > 2 > │ > > │ > inl generate_cid_borsh () = > │ > !\($'"#[[result_serializer(borsh)]] //"') : () > │ > !\($'"pub fn generate_cid_borsh( //"') : () > │ > !\($'" &self, //"') : () > │ > !\($'" #[[serializer(borsh)]] content: Vec<u8>, > //"') : () > │ > !\($'") -> String { //"') : () > │ > !\($'" self.generate_cid(content) //"') : () > │ > !\($'"} //"') : () > │ > 1 > │ > > │ > inl claim_alias () = > │ > !\($'"pub fn claim_alias( //"') : () > │ > !\($'" &mut self, //"') : () > │ > !\($'" alias: String, //"') : () > │ > !\($'") { //"') : () > │ > > │ > inl state = !\($'$"&mut self.0"') > │ > inl alias = !\($'$"alias"') > │ > > │ > inl result = claim_alias state alias > │ > trace Debug (fun () => "") (join id) > │ > > │ > !\($'"} //"') : () > │ > > │ > !\($'"} //"') : () > │ > > │ > !\($'"} //"') : () > │ > > │ > 3 > │ > > │ > inl get_account_info () = > │ > !\($'"pub fn get_account_info( //"') : () > │ > !\($'" &self, //"') : () > │ > !\($'" account_id: near_sdk::AccountId, //"') : () > │ > !\($'") -> Option<(String, u64, u32)> { //"') : () > │ > > │ > inl state = !\($'$"&self.0"') > │ > inl account_id : near.account_id = > !\($'$"account_id"') > │ > > │ > inl result = account_id |> get_account_info state > │ > $'let _result = !result in _result |> (fun x -> > │ > Fable.Core.RustInterop.emitRustExpr x "$0 } // 4") // 3' : > () > │ > > │ > !\($'"} // 1"') : () > │ > > │ > 1 > │ > > │ > inl get_alias_map () = > │ > !\($'"pub fn get_alias_map( //"') : () > │ > !\($'" &self, //"') : () > │ > !\($'" alias: String, //"') : () > │ > !\($'") -> > Option<std::collections::HashMap<near_sdk::AccountId, (u64, > │ > u32)>> { //"') : () > │ > > │ > inl alias_map : rust.ref (near.lookup_map > sm'.std_string (mapm.hash_map > │ > near.account_id (u64 * u32))) = > │ > !\($'$"&self.0.4"') > │ > > │ > inl alias : sm'.std_string = !\($'$"alias"') > │ > > │ > trace Debug > │ > fun () => "chat_contract.get_alias_map" > │ > fun () => { alias } > │ > > │ > trace Debug (fun () => "") (join id) > │ > > │ > !\\(alias, $'" !alias_map.get(&$0).cloned() //"') > : () > │ > !\($'"} //"') : () > │ > > │ > !\($'"} //"') : () > │ > > │ > 2 > │ > > │ > inl get_alias_map_borsh () = > │ > !\($'"#[[result_serializer(borsh)]] //"') : () > │ > !\($'"pub fn get_alias_map_borsh( //"') : () > │ > !\($'" &self, //"') : () > │ > !\($'" #[[serializer(borsh)]] alias: String, //"') > : () > │ > !\($'") -> > Option<std::collections::HashMap<near_sdk::AccountId, (u64, > │ > u32)>> { //"') : () > │ > !\($'" self.get_alias_map(alias) //"') : () > │ > !\($'"} //"') : () > │ > 1 > │ > > │ > inl fns = > │ > [[ > │ > new_ > │ > is_valid_alias > │ > generate_cid > │ > generate_cid_borsh > │ > claim_alias > │ > get_account_info > │ > get_alias_map > │ > get_alias_map_borsh > │ > ]] > │ > > │ > inl rec loop acc fns i = > │ > match fns with > │ > | [[]] => acc > │ > | x :: xs => > │ > !\($'"#[[near_sdk::near_bindgen]] //"') : () > │ > !\($'"impl State { //"') : () > │ > inl n = x () > │ > !\($'"} /* c"') : () > │ > inl rec loop' i' = > │ > if i' <> 1 // <= n > │ > then (!\($'"true; */ // ???? / i: !i / i\': > !i' / acc: !acc / n: > │ > !n"') : bool) |> ignore > │ > else > │ > (!\($'"true; // ??? / i: !i / i\': !i' > / acc: !acc / n: > │ > !n"') : bool) |> ignore > │ > loop' (i' + 1) > │ > loop' 1u8 > │ > loop (acc + n) xs (i + 1) > │ > inl n = loop 0u8 fns 1u8 > │ > > │ > > │ > // !\($'"/* a"') : () > │ > > │ > // !\($'"} // b"') : () > │ > > │ > !\($'"fn _main() //"') : () > │ > !\($'"{ { //"') : () > │ > > │ > inl rec loop' i' = > │ > if i' <= n > │ > then > │ > (!\($'"true; { (); // ?? / i\': !i' / n: !n"') > : bool) |> ignore > │ > loop' (i' + 1) > │ > else > │ > (!\($'"true; { { (); // ? / i\': !i' / n: !n"') > : bool) |> ignore > │ > // (!\($'"true; */ // ?? / i\': !i' / n: !n"') > : bool) |> ignore > │ > loop' 1u8 > │ > > │ > inl main () = > │ > $'!main |> ignore' : () > │ 00:06:00 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 42437 } > │ 00:06:00 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb", "--to", > "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:06:01 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.ipynb to html > │ 00:06:01 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:06:01 v #7 ! validate(nb) > │ 00:06:01 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:06:01 v #9 ! return _pygments_highlight( > │ 00:06:02 v #10 ! [NbConvertApp] Writing 390515 bytes to > c:\home\git\polyglot\apps\chat\contract\chat_contract.dib.html > │ 00:06:02 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 884 } > │ 00:06:02 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 884 } > │ 00:06:02 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.html'; (Get-Content > $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + > $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; > $path = 'c:/home/git/polyglot/apps/chat/contract/chat_contract.dib.html'; > (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { > $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = > None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; > trace = true; working_directory = None } } > │ 00:06:03 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:06:03 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:06:03 d #16 spiral.run / dib / { exit_code = 0; > result_length = 43380 } > │ 00:00:00 d #1 writeDibCode / output: Spi / path: > chat_contract.dib > │ 00:00:00 d #2 parseDibCode / output: Spi / file: > chat_contract.dib > │ 00:00:00 d #1 persistCodeProject / packages: > [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; > deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: > chat_contract / hash: / code.Length: 151266 > │ 00:00:00 d #2 buildProject / fullPath: > c:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj > │ 00:00:00 d #1 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "c:/home/git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" > --runtime linux-x64"; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" > --runtime linux-x64; cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\chat_contract" } } > │ 00:00:01 v #2 > Determining projects to restore... > │ 00:00:01 v #3 > Paket version > 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 > │ 00:00:01 v #4 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:01 v #5 > Total time taken: 0 milliseconds > │ 00:00:02 v #6 > Restored > c:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj (in 300 > ms). > │ 00:00:10 v #7 > > c:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fs(3437,15): > warning FS0025: Incomplete pattern matches on this expression. For example, the > value 'US6_0 (_)' may indicate a case not covered by the pattern(s). > [c:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj] > │ 00:00:15 v #8 > chat_contract -> > c:\home\git\polyglot\target\Builder\chat_contract\bin\Release\net9.0\linux-x64\c > hat_contract.dll > │ 00:00:16 v #9 > chat_contract -> > C:\home\git\polyglot\apps\chat\contract\dist\ > │ 00:00:16 d #10 runtime.execute_with_options_async / { > exit_code = 0; output_length = 774; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" > --runtime linux-x64; cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\chat_contract" } } > │ 00:00:16 d #11 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "c:/home/git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" > --runtime win-x64"; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" > --runtime win-x64; cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\chat_contract" } } > │ 00:00:17 v #12 > Determining projects to restore... > │ 00:00:17 v #13 > Paket version > 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 > │ 00:00:17 v #14 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:17 v #15 > Total time taken: 0 milliseconds > │ 00:00:18 v #16 > Restored > c:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj (in 297 > ms). > │ 00:00:26 v #17 > > c:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fs(3437,15): > warning FS0025: Incomplete pattern matches on this expression. For example, the > value 'US6_0 (_)' may indicate a case not covered by the pattern(s). > [c:\home\git\polyglot\target\Builder\chat_contract\chat_contract.fsproj] > │ 00:00:31 v #18 > chat_contract -> > c:\home\git\polyglot\target\Builder\chat_contract\bin\Release\net9.0\win-x64\cha > t_contract.dll > │ 00:00:32 v #19 > chat_contract -> > C:\home\git\polyglot\apps\chat\contract\dist\ > │ 00:00:32 d #20 runtime.execute_with_options_async / { > exit_code = 0; output_length = 772; options = { command = dotnet publish > "c:/home/git\polyglot\target/Builder\chat_contract\chat_contract.fsproj" > --configuration Release --output "C:\home\git\polyglot\apps\chat\contract\dist" > --runtime win-x64; cancellation_token = None; environment_variables = [||]; > on_line = None; stdin = None; trace = true; working_directory = Some > "c:\home\git\polyglot\target\Builder\chat_contract" } } > │ spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: > C:\home\git\polyglot\target\Builder\chat_contract > │ polyglot/scripts/core.ps1/ResolveLink #4 / Path: > C:\home\git\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: > / path_target: C:\home\git\polyglot / parent: > C:\home\git\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot > │ spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: > C:\home\git\polyglot\target\Builder\chat_contract / ProjectName: chat_contract / > Language: rs / Runtime: CONTRACT / root: C:\home\git\polyglot > │ Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) > │ > │ Thanks to the contributor! @forki > │ Stand with Ukraine! https://standwithukraine.com.ua/ > │ > │ Parsing target\Builder\chat_contract\chat_contract.fsproj... > │ Project and references (14 source files) parsed in 2898ms > │ > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInt > erop.dll for Fable plugins, skipping this assembly. Original error: The > exception has been reported. This internal exception should now be caught at an > error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The > exception has been reported. This internal exception should now be caught at an > error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. > Original error: The exception has been reported. This internal exception should > now be caught at an error recovery point on the stack. Original message: The > type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You > must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original > error: The exception has been reported. This internal exception should now be > caught at an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The > exception has been reported. This internal exception should now be caught at an > error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: > The exception has been reported. This internal exception should now be caught at > an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original > error: The exception has been reported. This internal exception should now be > caught at an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original > error: The exception has been reported. This internal exception should now be > caught at an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. > Original error: The exception has been reported. This internal exception should > now be caught at an error recovery point on the stack. Original message: The > type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You > must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Components.dll for Fable plugins, skipping this assembly. Original error: > The exception has been reported. This internal exception should now be caught at > an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ > │ Started Fable compilation... > │ > │ Fable compilation finished in 10141ms > │ > │ .\target\Builder\chat_contract\chat_contract.fs(3437,15): > (3437,19) warning FSHARP: Incomplete pattern matches on this expression. For > example, the value 'US6_0 (_)' may indicate a case not covered by the > pattern(s). (code 25) > │ .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\sm.fsx(561,0): (561,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\common.fsx(2199,0): (2199,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\crypto.fsx(2426,0): (2426,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\networking.fsx(5050,0): (5050,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\trace.fsx(2232,0): (2232,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\runtime.fsx(7321,0): (7321,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\file_system.fsx(19036,0): (19036,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\target\Builder\chat_contract\chat_contract.fs(3643,6): > (3643,12) warning FABLE: For Rust, support for F# static and module do bindings > is disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ Compiling fable_library_rust v0.1.0 > (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust) > │ Compiling chat_contract v0.0.1 > (C:\home\git\polyglot\apps\chat\contract) > │ Finished `release` profile [optimized] target(s) in > 13.74s > │ polyglot/apps/chat/contract/build.ps1 / $targetDir = > C:\home\git\polyglot\target\Builder\chat_contract / $projectName: chat_contract > / $env:CI:'' > │ warning: > /mnt/c/home/git/polyglot/apps/spiral/temp/extension/Cargo.toml: the cargo > feature `edition2024` has been stabilized in the 1.85 release and is no longer > necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > /mnt/c/home/git/polyglot/apps/chat/contract/Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: /mnt/c/home/git/polyglot/apps/plot/Cargo.toml: > the cargo feature `edition2024` has been stabilized in the 1.85 release and is > no longer necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > /mnt/c/home/git/polyglot/examples/rust/exercism/Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: /mnt/c/home/git/polyglot/lib/math/Cargo.toml: > the cargo feature `edition2024` has been stabilized in the 1.85 release and is > no longer necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: /mnt/c/home/git/polyglot/workspace/Cargo.toml: > the cargo feature `edition2024` has been stabilized in the 1.85 release and is > no longer necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > /mnt/c/home/git/polyglot/apps/spiral/temp/test/Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > /mnt/c/home/git/polyglot/apps/chat/contract/tests/Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > /mnt/c/home/git/polyglot/apps/spiral/temp/cube/Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ Downloading crates ... > │ Downloaded anyhow v1.0.94 > │ Downloaded zerofrom v0.1.5 > │ Downloaded itoa v1.0.14 > │ Downloaded cpufeatures v0.2.16 > │ Downloaded zerofrom-derive v0.1.5 > │ Downloaded semver v1.0.24 > │ Downloaded litemap v0.7.4 > │ Downloaded tokio-rustls v0.26.1 > │ Downloaded time-macros v0.2.19 > │ Downloaded clap v4.5.23 > │ Downloaded rustls-pki-types v1.10.1 > │ Downloaded proc-macro2 v1.0.92 > │ Downloaded xml-rs v0.8.24 > │ Downloaded bytes v1.9.0 > │ Downloaded unicode-ident v1.0.14 > │ Downloaded indexmap v2.7.0 > │ Downloaded serde v1.0.216 > │ Downloaded serde_derive v1.0.216 > │ Downloaded http v1.2.0 > │ Downloaded cc v1.2.4 > │ Downloaded tokio-util v0.7.13 > │ Downloaded time v0.3.37 > │ Downloaded serde_json v1.0.133 > │ Downloaded hyper v1.5.1 > │ Downloaded clap_builder v4.5.23 > │ Downloaded h2 v0.4.7 > │ Downloaded near-sdk v5.6.0 > │ Downloaded portable-atomic v1.10.0 > │ Downloaded chrono v0.4.39 > │ Downloaded webpki-roots v0.26.7 > │ Downloaded syn v2.0.90 > │ Downloaded rustls v0.23.20 > │ Downloaded rustix v0.38.42 > │ Downloaded libc v0.2.168 > │ Downloaded tokio v1.42.0 > │ Downloaded near-sandbox-utils v0.12.0 > │ Downloaded tracing-indicatif v0.3.8 > │ Downloaded near-sdk-macros v5.6.0 > │ Downloaded openssl-src v300.4.1+3.4.0 > │ Compiling proc-macro2 v1.0.92 > │ Compiling unicode-ident v1.0.14 > │ Compiling libc v0.2.168 > │ Compiling serde v1.0.216 > │ Compiling once_cell v1.20.2 > │ Compiling pin-project-lite v0.2.15 > │ Compiling typenum v1.17.0 > │ Compiling smallvec v1.13.2 > │ Compiling itoa v1.0.14 > │ Compiling pkg-config v0.3.31 > │ Compiling bytes v1.9.0 > │ Compiling log v0.4.22 > │ Compiling equivalent v1.0.1 > │ Compiling indexmap v2.7.0 > │ Compiling tracing-core v0.1.33 > │ Compiling anyhow v1.0.94 > │ Compiling winnow v0.6.20 > │ Compiling quote v1.0.37 > │ Compiling ryu v1.0.18 > │ Compiling syn v2.0.90 > │ Compiling jobserver v0.1.32 > │ Compiling syn v1.0.109 > │ Compiling rustversion v1.0.18 > │ Compiling bitflags v2.6.0 > │ Compiling cc v1.2.4 > │ Compiling cpufeatures v0.2.16 > │ Compiling parking_lot_core v0.9.10 > │ Compiling getrandom v0.2.15 > │ Compiling signal-hook-registry v1.4.2 > │ Compiling parking_lot v0.12.3 > │ Compiling mio v1.0.3 > │ Compiling socket2 v0.5.8 > │ Compiling rand_core v0.6.4 > │ Compiling toml_edit v0.22.22 > │ Compiling serde_json v1.0.133 > │ Compiling borsh v1.5.3 > │ Compiling semver v1.0.24 > │ Compiling zstd-sys v2.0.13+zstd.1.5.6 > │ Compiling httparse v1.9.5 > │ Compiling ring v0.17.8 > │ Compiling synstructure v0.13.1 > │ Compiling proc-macro-crate v3.2.0 > │ Compiling http v0.2.12 > │ Compiling thread_local v1.1.8 > │ Compiling litemap v0.7.4 > │ Compiling openssl-src v300.4.1+3.4.0 > │ Compiling time-core v0.1.2 > │ Compiling http-body v0.4.6 > │ Compiling serde_derive v1.0.216 > │ Compiling zerofrom-derive v0.1.5 > │ Compiling yoke-derive v0.7.5 > │ Compiling tracing-attributes v0.1.28 > │ Compiling tokio-macros v2.4.0 > │ Compiling generic-array v0.14.7 > │ Compiling zerovec-derive v0.10.3 > │ Compiling tokio v1.42.0 > │ Compiling crypto-common v0.1.6 > │ Compiling displaydoc v0.2.5 > │ Compiling tracing v0.1.41 > │ Compiling futures-macro v0.3.31 > │ Compiling block-buffer v0.10.4 > │ Compiling zerocopy-derive v0.7.35 > │ Compiling digest v0.10.7 > │ Compiling futures-util v0.3.31 > │ Compiling icu_provider_macros v1.5.0 > │ Compiling borsh-derive v1.5.3 > │ Compiling thiserror-impl v1.0.69 > │ Compiling zerocopy v0.7.35 > │ Compiling sha2 v0.10.8 > │ Compiling ppv-lite86 v0.2.20 > │ Compiling tokio-util v0.7.13 > │ Compiling rand_chacha v0.3.1 > │ Compiling thiserror v1.0.69 > │ Compiling rand v0.8.5 > │ Compiling zerofrom v0.1.5 > │ Compiling yoke v0.7.5 > │ Compiling hex v0.4.3 > │ Compiling zerovec v0.10.4 > │ Compiling async-trait v0.1.83 > │ Compiling deranged v0.3.11 > │ Compiling tinystr v0.7.6 > │ Compiling openssl-sys v0.9.104 > │ Compiling icu_locid v1.5.0 > │ Compiling time v0.3.37 > │ Compiling serde_repr v0.1.19 > │ Compiling pin-project-internal v1.1.7 > │ Compiling rustc_version v0.4.1 > │ Compiling bzip2-sys v0.1.11+1.0.8 > │ Compiling tracing-log v0.2.0 > │ Compiling tracing-subscriber v0.3.19 > │ Compiling icu_provider v1.5.0 > │ Compiling curve25519-dalek v4.1.3 > │ Compiling pin-project v1.1.7 > │ Compiling icu_collections v1.5.0 > │ Compiling near-account-id v1.0.0 > │ Compiling h2 v0.3.26 > │ Compiling icu_locid_transform v1.5.0 > │ Compiling futures-executor v0.3.31 > │ Compiling axum-core v0.3.4 > │ Compiling crunchy v0.2.2 > │ Compiling either v1.13.0 > │ Compiling derive_more v0.99.18 > │ Compiling itertools v0.12.1 > │ Compiling darling_core v0.20.10 > │ Compiling icu_properties v1.5.1 > │ Compiling tokio-stream v0.1.17 > │ Compiling curve25519-dalek-derive v0.1.1 > │ Compiling derive_arbitrary v1.4.1 > │ Compiling hyper v0.14.31 > │ Compiling enum-map-derive v0.17.0 > │ Compiling axum v0.6.20 > │ Compiling secp256k1-sys v0.8.1 > │ Compiling schemars v0.8.21 > │ Compiling rustls-pki-types v1.10.1 > │ Compiling rustls v0.23.20 > │ Compiling strum_macros v0.24.3 > │ Compiling enum-map v2.7.3 > │ Compiling opentelemetry v0.22.0 > │ Compiling icu_normalizer v1.5.0 > │ Compiling arbitrary v1.4.1 > │ Compiling darling_macro v0.20.10 > │ Compiling num-rational v0.3.2 > │ Compiling prost-derive v0.12.6 > │ Compiling tower v0.4.13 > │ Compiling tokio-io-timeout v1.2.0 > │ Compiling block-padding v0.3.3 > │ Compiling async-stream-impl v0.3.6 > │ Compiling serde_derive_internals v0.29.1 > │ Compiling concurrent-queue v2.5.0 > │ Compiling ordered-float v4.5.0 > │ Compiling openssl v0.10.68 > │ Compiling glob v0.3.1 > │ Compiling async-stream v0.3.6 > │ Compiling prost v0.12.6 > │ Compiling schemars_derive v0.8.21 > │ Compiling opentelemetry_sdk v0.22.1 > │ Compiling hyper-timeout v0.4.1 > │ Compiling inout v0.1.3 > │ Compiling darling v0.20.10 > │ Compiling uint v0.9.5 > │ Compiling near-primitives-core v0.23.0 > │ Compiling ed25519-dalek v2.1.1 > │ Compiling strum v0.24.1 > │ Compiling idna_adapter v1.2.0 > │ Compiling openssl-macros v0.1.1 > │ Compiling http v1.2.0 > │ Compiling rustix v0.38.42 > │ Compiling toml_edit v0.19.15 > │ Compiling near-config-utils v0.23.0 > │ Compiling primitive-types v0.10.1 > │ Compiling idna v1.0.3 > │ Compiling cipher v0.4.4 > │ Compiling secp256k1 v0.27.0 > │ Compiling tonic v0.11.0 > │ Compiling actix-rt v2.10.0 > │ Compiling hmac v0.12.1 > │ Compiling blake2 v0.10.6 > │ Compiling actix_derive v0.6.2 > │ Compiling actix-macros v0.2.4 > │ Compiling linux-raw-sys v0.4.14 > │ Compiling zstd-safe v7.2.1 > │ Compiling actix v0.13.5 > │ Compiling near-crypto v0.23.0 > │ Compiling clap_builder v4.5.23 > │ Compiling miniz_oxide v0.8.0 > │ Compiling proc-macro-crate v1.3.1 > │ Compiling url v2.5.4 > │ Compiling http-body v1.0.1 > │ Compiling opentelemetry-proto v0.5.0 > │ Compiling event-listener v5.3.1 > │ Compiling clap_derive v4.5.18 > │ Compiling sha1 v0.10.6 > │ Compiling zvariant_utils v1.0.1 > │ Compiling native-tls v0.2.12 > │ Compiling opentelemetry-otlp v0.15.0 > │ Compiling serde_yaml v0.9.34+deprecated > │ Compiling flate2 v1.0.35 > │ Compiling clap v4.5.23 > │ Compiling event-listener-strategy v0.5.3 > │ Compiling prometheus v0.13.4 > │ Compiling proc-macro-error-attr v1.0.4 > │ Compiling aes v0.8.4 > │ Compiling h2 v0.4.7 > │ Compiling tracing-opentelemetry v0.23.0 > │ Compiling serde_with_macros v3.11.0 > │ Compiling tracing-appender v0.2.3 > │ Compiling futures v0.3.31 > │ Compiling near-time v0.23.0 > │ Compiling near-rpc-error-core v0.23.0 > │ Compiling enumflags2_derive v0.7.10 > │ Compiling dirs-sys-next v0.1.2 > │ Compiling futures-lite v2.5.0 > │ Compiling rustix v0.37.27 > │ Compiling dyn-clone v1.0.17 > │ Compiling iana-time-zone v0.1.61 > │ Compiling spin v0.9.8 > │ Compiling openssl-probe v0.1.5 > │ Compiling itertools v0.10.5 > │ Compiling chrono v0.4.39 > │ Compiling enumflags2 v0.7.10 > │ Compiling sha3 v0.10.8 > │ Compiling futures-lite v1.13.0 > │ Compiling near-rpc-error-macro v0.23.0 > │ Compiling dirs-next v2.0.0 > │ Compiling serde_with v3.11.0 > │ Compiling hyper v1.5.1 > │ Compiling near-o11y v0.23.0 > │ Compiling near-performance-metrics v0.23.0 > │ Compiling zstd v0.13.2 > │ Compiling proc-macro-error v1.0.4 > │ Compiling near-parameters v0.23.0 > │ Compiling async-channel v2.3.1 > │ Compiling reed-solomon-erasure v4.0.2 > │ Compiling io-lifetimes v1.0.11 > │ Compiling zvariant_derive v3.15.2 > │ Compiling near-fmt v0.23.0 > │ Compiling zstd-safe v5.0.2+zstd.1.5.2 > │ Compiling bytesize v1.3.0 > │ Compiling smart-default v0.6.0 > │ Compiling near-async-derive v0.23.0 > │ Compiling filetime v0.2.25 > │ Compiling base64ct v1.6.0 > │ Compiling near-primitives v0.23.0 > │ Compiling zvariant v3.15.2 > │ Compiling password-hash v0.4.2 > │ Compiling near-async v0.23.0 > │ Compiling signal-hook v0.3.17 > │ Compiling blocking v1.6.1 > │ Compiling hyper-util v0.1.10 > │ Compiling interactive-clap-derive v0.2.10 > │ Compiling polling v2.8.0 > │ Compiling rustls-webpki v0.102.8 > │ Compiling http-body-util v0.1.2 > │ Compiling num-bigint v0.4.6 > │ Compiling backtrace v0.3.71 > │ Compiling socket2 v0.4.10 > │ Compiling vte_generate_state_changes v0.1.2 > │ Compiling portable-atomic v1.10.0 > │ Compiling num-rational v0.4.2 > │ Compiling vte v0.11.1 > │ Compiling interactive-clap v0.2.10 > │ Compiling async-io v1.13.0 > │ Compiling pbkdf2 v0.11.0 > │ Compiling nix v0.26.4 > │ Compiling async-fs v1.6.0 > │ Compiling zstd v0.11.2+zstd.1.5.2 > │ Compiling bzip2 v0.4.4 > │ Compiling zbus_names v2.6.1 > │ Compiling xattr v1.3.1 > │ Compiling async-executor v1.13.1 > │ Compiling webpki-roots v0.26.7 > │ Compiling zbus_macros v3.15.2 > │ Compiling serde_urlencoded v0.7.1 > │ Compiling rustls-pemfile v2.2.0 > │ Compiling tracing-error v0.2.1 > │ Compiling digest v0.9.0 > │ Compiling derivative v2.2.0 > │ Compiling async-recursion v1.1.1 > │ Compiling num-iter v0.1.45 > │ Compiling mio v0.8.11 > │ Compiling xdg-home v1.3.0 > │ Compiling near-chain-configs v0.23.0 > │ Compiling num-complex v0.4.6 > │ Compiling ordered-stream v0.2.0 > │ Compiling ipnet v2.10.1 > │ Compiling color-spantrace v0.2.1 > │ Compiling dirs-sys v0.4.1 > │ Compiling eyre v0.6.12 > │ Compiling tinyvec v1.8.0 > │ Compiling zip v0.6.6 > │ Compiling ureq v2.12.1 > │ Compiling num v0.4.3 > │ Compiling signal-hook-mio v0.2.4 > │ Compiling tar v0.4.43 > │ Compiling zbus v3.15.2 > │ Compiling vt100 v0.15.2 > │ Compiling ahash v0.8.11 > │ Compiling near-abi v0.4.3 > │ Compiling phf_shared v0.10.0 > │ Compiling console v0.15.8 > │ Compiling near-jsonrpc-primitives v0.23.0 > │ Compiling near_schemafy_core v0.7.0 > │ Compiling hkdf v0.12.4 > │ Compiling cbc v0.1.2 > │ Compiling toml_datetime v0.6.8 > │ Compiling serde_spanned v0.6.8 > │ Compiling block-buffer v0.9.0 > │ Compiling crypto-mac v0.9.1 > │ Compiling scroll_derive v0.11.1 > │ Compiling fs2 v0.4.3 > │ Compiling is-docker v0.2.0 > │ Compiling csv-core v0.1.11 > │ Compiling rust_decimal v1.36.0 > │ Compiling indicatif v0.17.9 > │ Compiling binary-install v0.2.0 > │ Compiling near-sandbox-utils v0.8.0 > │ Compiling sha2 v0.9.9 > │ Compiling secret-service v3.1.0 > │ Compiling string_cache v0.8.7 > │ Compiling scroll v0.11.0 > │ Compiling csv v1.3.1 > │ Compiling is-wsl v0.4.0 > │ Compiling hmac v0.9.0 > │ Compiling near_schemafy_lib v0.7.0 > │ Compiling hashbrown v0.14.5 > │ Compiling crossterm v0.25.0 > │ Compiling color-eyre v0.6.3 > │ Compiling unicode-normalization v0.1.22 > │ Compiling dirs v5.0.1 > │ Compiling near-token v0.2.1 > │ Compiling term v0.7.0 > │ Compiling tempfile v3.14.0 > │ Compiling fuzzy-matcher v0.3.7 > │ Compiling linux-keyutils v0.2.4 > │ Compiling is-terminal v0.4.13 > │ Compiling memmap2 v0.5.10 > │ Compiling xml-rs v0.8.24 > │ Compiling home v0.5.9 > │ Compiling prettytable v0.10.0 > │ Compiling textwrap v0.16.1 > │ Compiling goblin v0.5.4 > │ Compiling elementtree v0.7.0 > │ Compiling symbolic-common v8.8.0 > │ Compiling names v0.14.0 > │ Compiling open v5.3.1 > │ Compiling inquire v0.7.5 > │ Compiling keyring v2.3.3 > │ Compiling bip39 v2.1.0 > │ Compiling shellexpand v3.1.0 > │ Compiling wasmparser v0.211.1 > │ Compiling near-abi-client-impl v0.1.1 > │ Compiling toml v0.8.19 > │ Compiling slipped10 v0.4.6 > │ Compiling tracing-indicatif v0.3.8 > │ Compiling camino v1.1.9 > │ Compiling near-gas v0.2.5 > │ Compiling zip v0.5.13 > │ Compiling linked-hash-map v0.5.6 > │ Compiling cargo-platform v0.1.9 > │ Compiling smart-default v0.7.1 > │ Compiling env_filter v0.1.2 > │ Compiling humantime v2.1.0 > │ Compiling near-sdk-macros v5.6.0 > │ Compiling symbolic-debuginfo v8.8.0 > │ Compiling env_logger v0.11.5 > │ Compiling cargo_metadata v0.18.1 > │ Compiling near-abi-client-macros v0.1.1 > │ Compiling near-workspaces v0.11.1 > │ Compiling prettyplease v0.1.25 > │ Compiling strum_macros v0.26.4 > │ Compiling jsonptr v0.4.7 > │ Compiling atty v0.2.14 > │ Compiling near-sandbox-utils v0.12.0 > │ Compiling json-patch v2.0.0 > │ Compiling near-sandbox-utils v0.9.0 > │ Compiling tokio-retry v0.3.0 > │ Compiling near-gas v0.3.0 > │ Compiling near-abi-client v0.1.1 > │ Compiling near-token v0.3.0 > │ Compiling near-sdk v5.6.0 > │ Compiling crypto-hash v0.3.4 > │ Compiling cargo-util v0.1.2 > │ Compiling tokio-native-tls v0.3.1 > │ Compiling hyper-tls v0.6.0 > │ Compiling reqwest v0.12.9 > │ Compiling near-jsonrpc-client v0.10.1 > │ Compiling near-socialdb-client v0.3.2 > │ Compiling near-cli-rs v0.11.1 > │ Compiling cargo-near v0.6.4 > │ Compiling chat_contract_tests v0.0.1 > (/mnt/c/home/git/polyglot/apps/chat/contract/tests) > │ Finished `release` profile [optimized] target(s) in > 14m 36s > │ Running > `/mnt/c/home/git/polyglot/workspace/target/release/chat_contract_tests` > │ > │ > │ new: ExecutionFinalResult { > │ total_gas_burnt: NearGas { > │ inner: 1644014352562, > │ }, > │ transaction: ExecutionOutcome { > │ transaction_hash: > EogNxVRhPKgBZfmFFA99uSmMDHwAm3S5Xk9poSnwNxV6, > │ block_hash: > 3yax6tjX5JswJdvCQN4F6nkmdYZVtr7ycTw15zp6YJMF, > │ logs: [], > │ receipt_ids: [ > │ 6gEZTFDw1WwQHZ2MPhPMQQLEbcscE2LAFGVbb6mu3ebQ, > │ ], > │ gas_burnt: NearGas { > │ inner: 308066207802, > │ }, > │ tokens_burnt: NearToken { > │ inner: 30806620780200000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250329102346-91065096285086", > │ ), > │ status: > SuccessReceiptId(6gEZTFDw1WwQHZ2MPhPMQQLEbcscE2LAFGVbb6mu3ebQ), > │ }, > │ receipts: [ > │ ExecutionOutcome { > │ transaction_hash: > 6gEZTFDw1WwQHZ2MPhPMQQLEbcscE2LAFGVbb6mu3ebQ, > │ block_hash: > 3yax6tjX5JswJdvCQN4F6nkmdYZVtr7ycTw15zp6YJMF, > │ logs: [], > │ receipt_ids: [ > │ 3iCa2RWiK74NNK9SG1jyCeuHcuf23b6mK1SWTirFEtQG, > │ ], > │ gas_burnt: NearGas { > │ inner: 1335948144760, > │ }, > │ tokens_burnt: NearToken { > │ inner: 133594814476000000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250329102346-91065096285086", > │ ), > │ status: SuccessValue(''), > │ }, > │ ], > │ status: SuccessValue(''), > │ } > │ total_gas_burnt_usd: 0.001098201587511416 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.000205788226811736 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.00089241336069968 > │ outcome_tokens_burnt_usd: 0.0 > │ > │ > │ claim_alias(contract, ''): ExecutionFinalResult { > │ total_gas_burnt: NearGas { > │ inner: 2234616488171, > │ }, > │ transaction: ExecutionOutcome { > │ transaction_hash: > 5AmDWLGxXqdDohaeTzn2UtzeDUaw9VdS7sge9rUrx8bk, > │ block_hash: > 4RBWaBVY3ueYLZtMpJmVhnkftJfstAeygmuqWNqb2CqK, > │ logs: [], > │ receipt_ids: [ > │ CbbMQXounXMRCEdMvJxqz1xMzAd3Xzgxiqh1Kyiuyfmj, > │ ], > │ gas_burnt: NearGas { > │ inner: 308110926482, > │ }, > │ tokens_burnt: NearToken { > │ inner: 30811092648200000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250329102346-91065096285086", > │ ), > │ status: > SuccessReceiptId(CbbMQXounXMRCEdMvJxqz1xMzAd3Xzgxiqh1Kyiuyfmj), > │ }, > │ receipts: [ > │ ExecutionOutcome { > │ transaction_hash: > CbbMQXounXMRCEdMvJxqz1xMzAd3Xzgxiqh1Kyiuyfmj, > │ block_hash: > 4RBWaBVY3ueYLZtMpJmVhnkftJfstAeygmuqWNqb2CqK, > │ logs: [], > │ receipt_ids: [ > │ pyzX5k22djXtw6PPeb3vai7nbFzbAraFoT8mvvCzktm, > │ ], > │ gas_burnt: NearGas { > │ inner: 1703322999189, > │ }, > │ tokens_burnt: NearToken { > │ inner: 170332299918900000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250329102346-91065096285086", > │ ), > │ status: Failure(ActionError(ActionError { index: > Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: > chat_contract.claim_alias / invalid alias")) })), > │ }, > │ ExecutionOutcome { > │ transaction_hash: > pyzX5k22djXtw6PPeb3vai7nbFzbAraFoT8mvvCzktm, > │ block_hash: > 9foCoonburLU962TFyNnWYThCb1XXf7Q78Q2BdQJ7sD, > │ logs: [], > │ receipt_ids: [], > │ gas_burnt: NearGas { > │ inner: 223182562500, > │ }, > │ tokens_burnt: NearToken { > │ inner: 0, > │ }, > │ executor_id: AccountId( > │ "dev-20250329102346-91065096285086", > │ ), > │ status: SuccessValue(''), > │ }, > │ ], > │ status: Failure(ActionError(ActionError { index: Some(0), > kind: FunctionCallError(ExecutionError("Smart contract panicked: > chat_contract.claim_alias / invalid alias")) })), > │ } > │ total_gas_burnt_usd: 0.001492723814098228 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.000205818098889976 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: false): > │ outcome_gas_burnt_usd: 0.001137819763458252 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.00014908595175 > │ outcome_tokens_burnt_usd: 0.0 > │ > │ > │ dev_create_account(account1): Account { > │ id: AccountId( > │ "dev-20250329102348-92499734400939", > │ ), > │ } > │ > │ > │ generate_cid_borsh(account1): ViewResultDetails { result: > [59, 0, 0, 0, 98, 97, 102, 107, 114, 101, 105, 104, 100, 119, 100, 99, 101, 102, > 103, 104, 52, 100, 113, 107, 106, 118, 54, 55, 117, 122, 99, 109, 119, 55, 111, > 106, 101, 101, 54, 120, 101, 100, 122, 100, 101, 116, 111, 106, 117, 122, 106, > 101, 118, 116, 101, 110, 120, 113, 117, 118, 121, 107, 117], logs: [] } > │ > │ > │ claim_alias(account1, alias1): ExecutionFinalResult { > │ total_gas_burnt: NearGas { > │ inner: 3675323811035, > │ }, > │ transaction: ExecutionOutcome { > │ transaction_hash: > CvHAxeu1jwHuMT4XmF6faYaWW4xVFmbmJ2S3PJYDLm8H, > │ block_hash: > 7bLQPxMPwow9QrYESBKzdjxZMNkJtkihrHhDi4fHgZ3h, > │ logs: [], > │ receipt_ids: [ > │ 9cVrzYbinVJMBFg6GkPC9U7afb2Gjd1JNFNvWMWyPPLm, > │ ], > │ gas_burnt: NearGas { > │ inner: 308124342086, > │ }, > │ tokens_burnt: NearToken { > │ inner: 30812434208600000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250329102348-92499734400939", > │ ), > │ status: > SuccessReceiptId(9cVrzYbinVJMBFg6GkPC9U7afb2Gjd1JNFNvWMWyPPLm), > │ }, > │ receipts: [ > │ ExecutionOutcome { > │ transaction_hash: > 9cVrzYbinVJMBFg6GkPC9U7afb2Gjd1JNFNvWMWyPPLm, > │ block_hash: > QUhW6G4v2N85nZTQ2oUxfjgo9js4KxGV4jmw6csdLhN, > │ logs: [ > │ "10:23:50 \u{1b}[94md\u{1b}[39m #1 > chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = > 1743243830233716875; signer_account_id = \"dev-20250329102348-92499734400939\"; > predecessor_account_id = \"dev-20250329102348-92499734400939\" }\n10:23:50 > \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = None }", > │ ], > │ receipt_ids: [ > │ 8P6eG5dxwiyy4kmfnhjxq8uYooJETXAHbGXRbuk1GFGD, > │ ], > │ gas_burnt: NearGas { > │ inner: 3144016906449, > │ }, > │ tokens_burnt: NearToken { > │ inner: 314401690644900000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250329102346-91065096285086", > │ ), > │ status: SuccessValue(''), > │ }, > │ ExecutionOutcome { > │ transaction_hash: > 8P6eG5dxwiyy4kmfnhjxq8uYooJETXAHbGXRbuk1GFGD, > │ block_hash: > 4ayWgGZbiWk4UTc1aoHefqSMm3QWK7CwPBFsRL1aoZBx, > │ logs: [], > │ receipt_ids: [], > │ gas_burnt: NearGas { > │ inner: 223182562500, > │ }, > │ tokens_burnt: NearToken { > │ inner: 0, > │ }, > │ executor_id: AccountId( > │ "dev-20250329102348-92499734400939", > │ ), > │ status: SuccessValue(''), > │ }, > │ ], > │ status: SuccessValue(''), > │ } > │ total_gas_burnt_usd: 0.00245511630577138 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.000205827060513448 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.002100203293507932 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.00014908595175 > │ outcome_tokens_burnt_usd: 0.0 > │ > │ > │ claim_alias(account1, alias1): ExecutionFinalResult { > │ total_gas_burnt: NearGas { > │ inner: 3809435696729, > │ }, > │ transaction: ExecutionOutcome { > │ transaction_hash: > 9rmZYW2rcobbpv8vH8wFLmJ56QmtGhhMMcZKT1YefGni, > │ block_hash: > 6adnY1RXz6KhmYQuhb1W7Yf3EwqCSgGeQ71F1eWeuTHD, > │ logs: [], > │ receipt_ids: [ > │ 4acYtDCNwGLSyAEWMFXa5TAhZDtMWYRots8Jg2Xvm9Mt, > │ ], > │ gas_burnt: NearGas { > │ inner: 308124342086, > │ }, > │ tokens_burnt: NearToken { > │ inner: 30812434208600000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250329102348-92499734400939", > │ ), > │ status: > SuccessReceiptId(4acYtDCNwGLSyAEWMFXa5TAhZDtMWYRots8Jg2Xvm9Mt), > │ }, > │ receipts: [ > │ ExecutionOutcome { > │ transaction_hash: > 4acYtDCNwGLSyAEWMFXa5TAhZDtMWYRots8Jg2Xvm9Mt, > │ block_hash: > 4SdZRWgHXCr71ihHXjxnV6osHUaNC3GCTgJJziM6td71, > │ logs: [ > │ "10:23:51 \u{1b}[94md\u{1b}[39m #1 > chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = > 1743243831261809075; signer_account_id = \"dev-20250329102348-92499734400939\"; > predecessor_account_id = \"dev-20250329102348-92499734400939\" }\n10:23:51 > \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = > Some(\"alias1\") }", > │ ], > │ receipt_ids: [ > │ 8BhhAYD1Vyio62eFKncDMj9QwyheoJ5EbYTogo1t7KGC, > │ ], > │ gas_burnt: NearGas { > │ inner: 3278128792143, > │ }, > │ tokens_burnt: NearToken { > │ inner: 327812879214300000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250329102346-91065096285086", > │ ), > │ status: SuccessValue(''), > │ }, > │ ExecutionOutcome { > │ transaction_hash: > 8BhhAYD1Vyio62eFKncDMj9QwyheoJ5EbYTogo1t7KGC, > │ block_hash: > A8d2RgAGTPSyo4FMZqGSwypgohD8Dz2Eh8QiW4iibCjw, > │ logs: [], > │ receipt_ids: [], > │ gas_burnt: NearGas { > │ inner: 223182562500, > │ }, > │ tokens_burnt: NearToken { > │ inner: 0, > │ }, > │ executor_id: AccountId( > │ "dev-20250329102348-92499734400939", > │ ), > │ status: SuccessValue(''), > │ }, > │ ], > │ status: SuccessValue(''), > │ } > │ total_gas_burnt_usd: 0.002544703045414972 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.000205827060513448 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.002189790033151524 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.00014908595175 > │ outcome_tokens_burnt_usd: 0.0 > │ > │ > │ get_account_info(account1): Some( > │ ( > │ "alias1", > │ 1743243831261809075, > │ 0, > │ ), > │ ) > │ > │ > │ get_alias_map(account1, alias1): Some( > │ { > │ AccountId( > │ "dev-20250329102348-92499734400939", > │ ): ( > │ 1743243831261809075, > │ 0, > │ ), > │ }, > │ ) > │ > │ > │ dev_create_account(account2): Account { > │ id: AccountId( > │ "dev-20250329102351-62326749506317", > │ ), > │ } > │ > │ > │ claim_alias(alias2): ExecutionFinalResult { > │ total_gas_burnt: NearGas { > │ inner: 3907307282147, > │ }, > │ transaction: ExecutionOutcome { > │ transaction_hash: > GBUJtKXLWLugCfAtuwPEjDpQ4LFZasnDx62kh31pihU2, > │ block_hash: > GbJHCGw6Y7VD7AR26KpTfHJdEpfDUx1NmmMquZbvdZ2S, > │ logs: [], > │ receipt_ids: [ > │ Fv8EtqEVVZdnTxtCZ17BMcTT9S6fuZmt3a32HyRdomLn, > │ ], > │ gas_burnt: NearGas { > │ inner: 308124342086, > │ }, > │ tokens_burnt: NearToken { > │ inner: 30812434208600000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250329102351-62326749506317", > │ ), > │ status: > SuccessReceiptId(Fv8EtqEVVZdnTxtCZ17BMcTT9S6fuZmt3a32HyRdomLn), > │ }, > │ receipts: [ > │ ExecutionOutcome { > │ transaction_hash: > Fv8EtqEVVZdnTxtCZ17BMcTT9S6fuZmt3a32HyRdomLn, > │ block_hash: > B7FjNZp2nNNexLb7otwtjNDxYjxV2gMnfWPsrx9j6Vmu, > │ logs: [ > │ "10:23:53 \u{1b}[94md\u{1b}[39m #1 > chat_contract.claim_alias / { alias = \"alias2\"; block_timestamp = > 1743243833322123775; signer_account_id = \"dev-20250329102351-62326749506317\"; > predecessor_account_id = \"dev-20250329102351-62326749506317\" }\n10:23:53 > \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = None }", > │ ], > │ receipt_ids: [ > │ 2nEQb2JFzcujES8akf8kNBH5dgirGLP4v1c1nsm4BqBv, > │ ], > │ gas_burnt: NearGas { > │ inner: 3376000377561, > │ }, > │ tokens_burnt: NearToken { > │ inner: 337600037756100000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250329102346-91065096285086", > │ ), > │ status: SuccessValue(''), > │ }, > │ ExecutionOutcome { > │ transaction_hash: > 2nEQb2JFzcujES8akf8kNBH5dgirGLP4v1c1nsm4BqBv, > │ block_hash: > 6C2AaGXtYxcGNL3qEYcuh8qR1BAFkJWd9LhUjcUtr5h9, > │ logs: [], > │ receipt_ids: [], > │ gas_burnt: NearGas { > │ inner: 223182562500, > │ }, > │ tokens_burnt: NearToken { > │ inner: 0, > │ }, > │ executor_id: AccountId( > │ "dev-20250329102351-62326749506317", > │ ), > │ status: SuccessValue(''), > │ }, > │ ], > │ status: SuccessValue(''), > │ } > │ total_gas_burnt_usd: 0.002610081264474196 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.000205827060513448 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.002255168252210748 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.00014908595175 > │ outcome_tokens_burnt_usd: 0.0 > │ > │ > │ get_account_info(account2): Some( > │ ( > │ "alias2", > │ 1743243833322123775, > │ 0, > │ ), > │ ) > │ > │ > │ get_alias_map_borsh(alias2): Some( > │ { > │ AccountId( > │ "dev-20250329102351-62326749506317", > │ ): ( > │ 1743243833322123775, > │ 0, > │ ), > │ }, > │ ) > │ > │ > │ claim_alias(account2, alias1): ExecutionFinalResult { > │ total_gas_burnt: NearGas { > │ inner: 4099022206478, > │ }, > │ transaction: ExecutionOutcome { > │ transaction_hash: > 4fnJjMU7A8Te8DMHwrotxJpLFDZ5Cz6Eho9B8kUAsZYA, > │ block_hash: > 7aPqQgYF2Wt4ikYVgN2QUFsqTWo2iZe6WgUEbfRvtLQj, > │ logs: [], > │ receipt_ids: [ > │ BxhD6LeGmyfdJuDjohh1NkaVHmFJwvvyQY4bcD3LtcxM, > │ ], > │ gas_burnt: NearGas { > │ inner: 308124342086, > │ }, > │ tokens_burnt: NearToken { > │ inner: 30812434208600000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250329102351-62326749506317", > │ ), > │ status: > SuccessReceiptId(BxhD6LeGmyfdJuDjohh1NkaVHmFJwvvyQY4bcD3LtcxM), > │ }, > │ receipts: [ > │ ExecutionOutcome { > │ transaction_hash: > BxhD6LeGmyfdJuDjohh1NkaVHmFJwvvyQY4bcD3LtcxM, > │ block_hash: > E8G4q2hi27BSZt6z3DgsZDqPYmgZ4kZDcAcDs1yJDB4A, > │ logs: [ > │ "10:23:54 \u{1b}[94md\u{1b}[39m #1 > chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = > 1743243834352540775; signer_account_id = \"dev-20250329102351-62326749506317\"; > predecessor_account_id = \"dev-20250329102351-62326749506317\" }\n10:23:54 > \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = > Some(\"alias2\") }", > │ ], > │ receipt_ids: [ > │ 7fk9mWuqcmyT21jNMNPhT7W3DE6s3ArbzYu6czmUVUV, > │ ], > │ gas_burnt: NearGas { > │ inner: 3567715301892, > │ }, > │ tokens_burnt: NearToken { > │ inner: 356771530189200000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250329102346-91065096285086", > │ ), > │ status: SuccessValue(''), > │ }, > │ ExecutionOutcome { > │ transaction_hash: > 7fk9mWuqcmyT21jNMNPhT7W3DE6s3ArbzYu6czmUVUV, > │ block_hash: > Cb5GKTLD29BVMDdhG7Bifb8eZQDxiSqHN1TcJTGMpdn7, > │ logs: [], > │ receipt_ids: [], > │ gas_burnt: NearGas { > │ inner: 223182562500, > │ }, > │ tokens_burnt: NearToken { > │ inner: 0, > │ }, > │ executor_id: AccountId( > │ "dev-20250329102351-62326749506317", > │ ), > │ status: SuccessValue(''), > │ }, > │ ], > │ status: SuccessValue(''), > │ } > │ total_gas_burnt_usd: 0.002738146833927304 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.000205827060513448 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.0023832338216638557 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.00014908595175 > │ outcome_tokens_burnt_usd: 0.0 > │ > │ > │ get_account_info(account2): Some( > │ ( > │ "alias1", > │ 1743243834352540775, > │ 1, > │ ), > │ ) > │ > │ > │ get_alias_map(account2, alias1): Some( > │ { > │ AccountId( > │ "dev-20250329102351-62326749506317", > │ ): ( > │ 1743243834352540775, > │ 1, > │ ), > │ AccountId( > │ "dev-20250329102348-92499734400939", > │ ): ( > │ 1743243831261809075, > │ 0, > │ ), > │ }, > │ ) > │ > │ > │ get_alias_map(account2, alias2): Some( > │ {}, > │ ) > │ > │ > │ claim_alias(account1, alias2): ExecutionFinalResult { > │ total_gas_burnt: NearGas { > │ inner: 3873596954246, > │ }, > │ transaction: ExecutionOutcome { > │ transaction_hash: > Bx9YCQNPikopJ3UFAYagBQ9UBKPboeQYNwmMG52UL6Yy, > │ block_hash: > 6B96vrsQD6616Rw3xpLGWC79wyogfinguPQM5yytKWDJ, > │ logs: [], > │ receipt_ids: [ > │ H4sFcehcfxFkELByS4vsEjSstW3X8BbT9udpCfmqDvAJ, > │ ], > │ gas_burnt: NearGas { > │ inner: 308124342086, > │ }, > │ tokens_burnt: NearToken { > │ inner: 30812434208600000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250329102348-92499734400939", > │ ), > │ status: > SuccessReceiptId(H4sFcehcfxFkELByS4vsEjSstW3X8BbT9udpCfmqDvAJ), > │ }, > │ receipts: [ > │ ExecutionOutcome { > │ transaction_hash: > H4sFcehcfxFkELByS4vsEjSstW3X8BbT9udpCfmqDvAJ, > │ block_hash: > 2xmZTNNu2UxKWDyW83PGNphsu6MnUhE6Ycrk4bM2yZJL, > │ logs: [ > │ "10:23:55 \u{1b}[94md\u{1b}[39m #1 > chat_contract.claim_alias / { alias = \"alias2\"; block_timestamp = > 1743243835372312375; signer_account_id = \"dev-20250329102348-92499734400939\"; > predecessor_account_id = \"dev-20250329102348-92499734400939\" }\n10:23:55 > \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = > Some(\"alias1\") }", > │ ], > │ receipt_ids: [ > │ DxYaGnNDnjzBjaxUi9U5g4t19swcBbzdtwETNwdYPEps, > │ ], > │ gas_burnt: NearGas { > │ inner: 3565472612160, > │ }, > │ tokens_burnt: NearToken { > │ inner: 356547261216000000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250329102346-91065096285086", > │ ), > │ status: SuccessValue(''), > │ }, > │ ], > │ status: SuccessValue(''), > │ } > │ total_gas_burnt_usd: 0.002587562765436328 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.000205827060513448 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.00238173570492288 > │ outcome_tokens_burnt_usd: 0.0 > │ > │ > │ get_account_info(account1): Some( > │ ( > │ "alias2", > │ 1743243835372312375, > │ 0, > │ ), > │ ) > │ > │ > │ get_alias_map(account1, alias2): Some( > │ { > │ AccountId( > │ "dev-20250329102348-92499734400939", > │ ): ( > │ 1743243835372312375, > │ 0, > │ ), > │ }, > │ ) > │ > │ > │ get_alias_map(account1, alias1): Some( > │ { > │ AccountId( > │ "dev-20250329102351-62326749506317", > │ ): ( > │ 1743243834352540775, > │ 1, > │ ), > │ }, > │ ) > │ > │ > │ claim_alias(account1, alias1): ExecutionFinalResult { > │ total_gas_burnt: NearGas { > │ inner: 4098951449462, > │ }, > │ transaction: ExecutionOutcome { > │ transaction_hash: > 5VAozd8fMgps6knB5rcTfCd4LCxxUspPaVS1RRGrzrRh, > │ block_hash: > 6Y1MhvorEbpoHtJ84cFxP4he8jgUMcMY4NrgFzSiAk7L, > │ logs: [], > │ receipt_ids: [ > │ CvwLbJaiiZJPs7z23uVs65KtiRnxkRjR1kYmEiuLgLpo, > │ ], > │ gas_burnt: NearGas { > │ inner: 308124342086, > │ }, > │ tokens_burnt: NearToken { > │ inner: 30812434208600000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250329102348-92499734400939", > │ ), > │ status: > SuccessReceiptId(CvwLbJaiiZJPs7z23uVs65KtiRnxkRjR1kYmEiuLgLpo), > │ }, > │ receipts: [ > │ ExecutionOutcome { > │ transaction_hash: > CvwLbJaiiZJPs7z23uVs65KtiRnxkRjR1kYmEiuLgLpo, > │ block_hash: > FLfHJLGcC2RJCTPigfZg89JyPN6uJWXPAPGZJpigVsaa, > │ logs: [ > │ "10:23:55 \u{1b}[94md\u{1b}[39m #1 > chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = > 1743243835982235575; signer_account_id = \"dev-20250329102348-92499734400939\"; > predecessor_account_id = \"dev-20250329102348-92499734400939\" }\n10:23:55 > \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = > Some(\"alias2\") }", > │ ], > │ receipt_ids: [ > │ 4rPJgYooYtZ4StqTYYG5hPvGq5KLaXkXQKRcToJ6PbiA, > │ ], > │ gas_burnt: NearGas { > │ inner: 3567644544876, > │ }, > │ tokens_burnt: NearToken { > │ inner: 356764454487600000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250329102346-91065096285086", > │ ), > │ status: SuccessValue(''), > │ }, > │ ExecutionOutcome { > │ transaction_hash: > 4rPJgYooYtZ4StqTYYG5hPvGq5KLaXkXQKRcToJ6PbiA, > │ block_hash: > A5nMAT2bby5BH8NMgbihScBeo2tS9Qzbqj4hvZwTJ2bm, > │ logs: [], > │ receipt_ids: [], > │ gas_burnt: NearGas { > │ inner: 223182562500, > │ }, > │ tokens_burnt: NearToken { > │ inner: 0, > │ }, > │ executor_id: AccountId( > │ "dev-20250329102348-92499734400939", > │ ), > │ status: SuccessValue(''), > │ }, > │ ], > │ status: SuccessValue(''), > │ } > │ total_gas_burnt_usd: 0.002738099568240616 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.000205827060513448 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.0023831865559771678 > │ outcome_tokens_burnt_usd: 0.0 > │ outcome (success: true): > │ outcome_gas_burnt_usd: 0.00014908595175 > │ outcome_tokens_burnt_usd: 0.0 > │ > │ > │ get_account_info(account1): Some( > │ ( > │ "alias1", > │ 1743243835982235575, > │ 1, > │ ), > │ ) > │ > │ > │ get_alias_map(account1, alias1): Some( > │ { > │ AccountId( > │ "dev-20250329102348-92499734400939", > │ ): ( > │ 1743243835982235575, > │ 1, > │ ), > │ AccountId( > │ "dev-20250329102351-62326749506317", > │ ): ( > │ 1743243834352540775, > │ 0, > │ ), > │ }, > │ ) > │ > │ > │ get_alias_map(account1, alias2): Some( > │ {}, > │ ) > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../apps/spiral/temp/build.ps1 } | Invoke-Block > > ── [ 7.21m - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "cube.dib"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib", "--output-path", > "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb"]; options = { > command = dotnet repl --exit-after-run --run > "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib" --output-path > "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb"; cancellation_token > = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), > ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; > working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # cube > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## cube > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > open System > │ > open System.Threading.Tasks > │ > open System.Text > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let width = 160 > │ > let height = 44 > │ > let backgroundChar = '.' > │ > let distanceFromCam = 100.0 > │ > let k1 = 40.0 > │ > let incrementSpeed = 0.6 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### get_width > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl get_width () = > │ > 160i32 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### get_height > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl get_height () = > │ > 44i32 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### get_background_char > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl get_background_char () = > │ > '.' > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### get_distance_from_cam > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl get_distance_from_cam () = > │ > 100f64 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### get_k1 > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl get_k1 () = > │ > 40f64 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### get_increment_speed > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl get_increment_speed () = > │ > 0.6f64 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### rotation > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type Rotation = { a: float; b: float; c: float } > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > type rotation = > │ > { > │ > a : f64 > │ > b : f64 > │ > c : f64 > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### cube > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type Cube = { cubeWidth: float; horizontalOffset: float } > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > type cube = > │ > { > │ > cube_width : f64 > │ > horizontal_offset : f64 > │ > } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### get_cubes > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let cubes = [[ > │ > { cubeWidth = 20.0; horizontalOffset = -40.0 } > │ > { cubeWidth = 10.0; horizontalOffset = 10.0 } > │ > { cubeWidth = 5.0; horizontalOffset = 40.0 } > │ > ]] > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl get_cubes () : list cube = > │ > [[ > │ > { cube_width = 20; horizontal_offset = -40 } > │ > { cube_width = 10; horizontal_offset = 10 } > │ > { cube_width = 5; horizontal_offset = 40 } > │ > ]] > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### calculate_x > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let calculateX i j k (rot: Rotation) = > │ > let a, b, c = rot.a, rot.b, rot.c > │ > j * sin a * sin b * cos c - k * cos a * sin b * cos c + > │ > j * cos a * sin c + k * sin a * sin c + i * cos b * cos > c > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl calculate_x i j k (rot : rotation) = > │ > inl a, b, c = rot.a, rot.b, rot.c > │ > j * sin a * sin b * cos c - k * cos a * sin b * cos c + > │ > j * cos a * sin c + k * sin a * sin c + i * cos b * cos > c > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### calculate_y > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let calculateY i j k (rot: Rotation) = > │ > let a, b, c = rot.a, rot.b, rot.c > │ > j * cos a * cos c + k * sin a * cos c - > │ > j * sin a * sin b * sin c + k * cos a * sin b * sin c - > │ > i * cos b * sin c > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl calculate_y i j k (rot : rotation) = > │ > inl a, b, c = rot.a, rot.b, rot.c > │ > j * cos a * cos c + k * sin a * cos c - > │ > j * sin a * sin b * sin c + k * cos a * sin b * sin c - > │ > i * cos b * sin c > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### calculate_z > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let calculateZ i j k (rot: Rotation) = > │ > let a, b, c = rot.a, rot.b, rot.c > │ > k * cos a * cos b - j * sin a * cos b + i * sin b > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl calculate_z i j k (rot : rotation) = > │ > inl a, b, c = rot.a, rot.b, rot.c > │ > k * cos a * cos b - j * sin a * cos b + i * sin b > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### calculate_for_surface > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let calculateForSurface cubeX cubeY cubeZ ch rot > horizontalOffset = > │ > let x = calculateX cubeX cubeY cubeZ rot > │ > let y = calculateY cubeX cubeY cubeZ rot > │ > let z = calculateZ cubeX cubeY cubeZ rot + > distanceFromCam > │ > let ooz = 1.0 / z > │ > let xp = int (float width / 2.0 + horizontalOffset + k1 > * ooz * x * 2.0) > │ > let yp = int (float height / 2.0 + k1 * ooz * y) > │ > let idx = xp + yp * width > │ > if idx >= 0 && idx < width * height > │ > then Some (idx, (ooz, ch)) > │ > else None > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > let calculate_for_surface cube_x cube_y cube_z ch rot > horizontal_offset = > │ > inl x = calculate_x cube_x cube_y cube_z rot > │ > inl y = calculate_y cube_x cube_y cube_z rot > │ > inl z = calculate_z cube_x cube_y cube_z rot + > get_distance_from_cam () > │ > inl ooz = 1.0 / z > │ > inl xp = i32 (f64 (get_width ()) / 2.0 + > horizontal_offset + get_k1 () * ooz > │ > * x * 2.0) > │ > inl yp = i32 (f64 (get_height ()) / 2.0 + get_k1 () * > ooz * y) > │ > inl idx = xp + yp * get_width () > │ > if idx >= 0 && idx < get_width () * get_height () > │ > then Some (idx, (ooz, ch)) > │ > else None > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### frange > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let frange start stop step = > │ > seq { > │ > let mutable current = start > │ > while (step > 0.0 && current < stop) || (step < 0.0 > && current > stop) > │ > do > │ > yield current > │ > current <- current + step > │ > } > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl frange start stop step : _ f64 = > │ > fun () => > │ > inl current = mut start > │ > loopw.while > │ > fun () => (step > 0f64 && *current < stop) || > (step < 0 && *current > │ > > stop) > │ > fun () => > │ > *current |> yield > │ > current <- *current + step > │ > |> seq.new_seq > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### get_cube_points > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let getCubePoints (cube: Cube) rot = > │ > let cw = cube.cubeWidth > │ > let ho = cube.horizontalOffset > │ > let cubeRange = frange (-cw) cw incrementSpeed > │ > seq { > │ > for cubeX in cubeRange do > │ > for cubeY in cubeRange do > │ > let x = > │ > [[ > │ > calculateForSurface cubeX cubeY > (-cw) '@' rot ho > │ > calculateForSurface cw cubeY cubeX > '$' rot ho > │ > calculateForSurface (-cw) cubeY > (-cubeX) '~' rot ho > │ > calculateForSurface (-cubeX) cubeY > cw '#' rot ho > │ > calculateForSurface cubeX (-cw) > (-cubeY) ';' rot ho > │ > calculateForSurface cubeX cw cubeY > '+' rot ho > │ > ]] > │ > |> Seq.choose id > │ > yield! x > │ > } > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl get_cube_points (cube : cube) rot = > │ > inl cw = cube.cube_width > │ > inl ho = cube.horizontal_offset > │ > inl cube_range = frange -cw cw (get_increment_speed ()) > │ > inl cube_range = join cube_range > │ > inl get cube_x cube_y = > │ > [[ > │ > calculate_for_surface cube_x cube_y -cw ';' rot > ho > │ > calculate_for_surface cw cube_y cube_x '\\' rot > ho > │ > calculate_for_surface -cw cube_y -cube_x '/' > rot ho > │ > calculate_for_surface -cube_x cube_y cw '=' rot > ho > │ > calculate_for_surface cube_x -cw -cube_y '>' > rot ho > │ > calculate_for_surface cube_x cw cube_y '<' rot > ho > │ > ]] > │ > |> listm'.box > │ > inl get = join get > │ > inl box x : _ (i32 * f64 * char) = > │ > optionm'.box x > │ > inl box = join box > │ > fun () => > │ > backend_switch { > │ > Fsharp = fun () => > │ > $'for cube_x in !cube_range do' > │ > $'for cube_y in !cube_range do' > │ > $'let x = !get cube_x cube_y |> Seq.choose > !box ' > │ > $'yield\! x' : () > │ > Python = fun () => > │ > $'cube_range = !cube_range ' > │ > $'get = !get ' > │ > $'box = !box ' > │ > $'for cube_x in cube_range:' > │ > $' for cube_y in cube_range:' > │ > $' x = get(cube_x)(cube_y)' > │ > $' for i in x:' > │ > $' i_ = box(i)' > │ > $' if i_ is not None: yield i' : > () > │ > } > │ > |> seq.new_seq > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### generate_frame > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let generateFrame rot = > │ > let updates = > │ > cubes > │ > |> Seq.collect (fun cube -> getCubePoints cube rot) > │ > let buffer = Array.create (width * height) None > │ > updates > │ > |> Seq.iter (fun (idx, (ooz, ch)) -> > │ > match buffer.[[idx]] with > │ > | Some (prevOoz, _) when prevOoz >= ooz -> () > │ > | _ -> buffer.[[idx]] <- Some (ooz, ch) > │ > ) > │ > let sb = StringBuilder() > │ > for row in 0 .. (height - 1) do > │ > for col in 0 .. (width - 1) do > │ > let idx = col + row * width > │ > let ch = > │ > match buffer.[[idx]] with > │ > | Some (_, ch) -> ch > │ > | None -> backgroundChar > │ > sb.Append(ch) |> ignore > │ > sb.AppendLine() |> ignore > │ > sb.ToString() > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > let rot = { a = 0.0; b = 0.0; c = 0.0 } > │ > let frame = generateFrame rot > │ > Console.Write frame > │ > > │ > ── [ 36.85ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > ................................................................................ > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > ................................................................................ > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > ................................................................................ > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > ................................................................................ > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > ................................................................................ > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > .@@@@@@@@@@@@@@@@@$............................................................. > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > .@@@@@@@@@@@@@@@@@$............................................................. > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$................................... > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$................................... > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$................................... > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$................................... > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$................................... > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > .@@@@@@@@@@@@@@@@@$................+++++++++.................................... > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > .@@@@@@@@@@@@@@@@@$............................................................. > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > .+++++++++++++++++$............................................................. > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > ................................................................................ > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > ................................................................................ > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > ................................................................................ > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > ................................................................................ > │ > │ > │ > > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > │ > > ................................................................................ > │ > │ > │ > > ....................++++++++++++++++++++++++++++++++++++++++.................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl generate_frame rot = > │ > inl updates : seq.seq' (int * (f64 * char)) = > │ > inl get_cube_points' cube : seq.seq' (int * (f64 * > char)) = > │ > get_cube_points cube rot > │ > inl cubes = get_cubes () |> listm'.box > │ > backend_switch { > │ > Fsharp = fun () => > │ > inl get_cube_points' = join > get_cube_points' > │ > (cubes |> $'Seq.collect !get_cube_points' > ') : seq.seq' (int * > │ > (f64 * char)) > │ > Python = fun () => > │ > $'cubes = !cubes ' > │ > $'get_cube_points = !get_cube_points' ' > │ > $'[[x for cube in cubes for x in > get_cube_points(*cube)]]' : > │ > seq.seq' (int * (f64 * char)) > │ > } > │ > inl none : _ (f64 * char) = None > │ > inl width = get_width () > │ > inl height = get_height () > │ > inl buffer = > │ > backend_switch { > │ > Fsharp = fun () => > │ > $'Array.create (!width * !height) !none ' : > a int (option (f64 * > │ > char)) > │ > Python = fun () => > │ > $'[[!none for _ in range(!width * > !height)]]' : a int (option > │ > (f64 * char)) > │ > } > │ > > │ > inl fn idx ((ooz : f64), (ch : char)) = > │ > match buffer |> am'.index idx with > │ > | Some (prev_ooz, _) when prev_ooz >= ooz => () > │ > | _ => > │ > inl x = (ooz, ch) |> Some > │ > backend_switch { > │ > Fsharp = fun () => > │ > $'!buffer.[[!idx]] <- !x ' : () > │ > Python = fun () => > │ > $'!buffer[[!idx]] = !x ' : () > │ > } > │ > backend_switch { > │ > Fsharp = fun () => > │ > updates > │ > |> $'Seq.iter (fun (struct (idx, ooz, ch)) -> > !fn idx (ooz, ch))' : > │ > () > │ > Python = fun () => > │ > $'for (idx, ooz, ch) in !updates: !fn(idx)(ooz, > ch)' : () > │ > } > │ > > │ > inl sb = "" |> sm'.string_builder > │ > inl fn1 row = > │ > inl fn2 col = > │ > inl idx = col + row * width > │ > inl ch = > │ > match buffer |> am'.index idx with > │ > | Some (_, ch) => ch > │ > | None => get_background_char () > │ > sb |> sm'.builder_append (ch |> > sm'.obj_to_string) |> ignore > │ > > │ > backend_switch { > │ > Fsharp = fun () => > │ > $'for col in 0 .. (!width - 1) do !fn2 col' > : () > │ > Python = fun () => > │ > $'for col in range(!width): !fn2(col)' : () > │ > } > │ > sb |> sm'.builder_append_line |> ignore > │ > > │ > backend_switch { > │ > Fsharp = fun () => > │ > $'for row in 0 .. (!height - 1) do !fn1 row' : > () > │ > Python = fun () => > │ > $'for row in range(!height): !fn1(row)' : () > │ > } > │ > sb |> sm'.obj_to_string > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > ///! fsharp > │ > ///! cuda > │ > ///! rust > │ > ///! typescript > │ > ///! python > │ > > │ > { a = 0.0; b = 0.0; c = 0.0 } > │ > |> generate_frame > │ > |> console.write_line > │ > > │ > ── [ 2.18m - return value ] > ──────────────────────────────────────────────────── > │ > │ " > │ > │ .py output (Cuda): > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ............................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > │ > │ > │ " > │ > │ > │ > > │ > ── [ 2.18m - stdout ] > ────────────────────────────────────────────────────────── > │ > │ .fsx output: > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\............................................................. > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\............................................................. > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\................<<<<<<<<<.................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\............................................................. > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .<<<<<<<<<<<<<<<<<\............................................................. > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### main_loop > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let rec mainLoop rot = async { > │ > let frame = generateFrame rot > │ > // Console.SetCursorPosition(0, 0) > │ > Console.Write(frame) > │ > let rot' = { a = rot.a + 0.05; b = rot.b + 0.05; c = > rot.c + 0.01 } > │ > do! Async.Sleep 16 > │ > return! mainLoop rot' > │ > } > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > let rec main_loop max i rot = > │ > fun () => > │ > inl rot = join rot > │ > inl frame = rot |> generate_frame > │ > if max < 0 then > │ > run_target function > │ > | Fsharp (Native) => fun () => > │ > $'System.Console.SetCursorPosition (0, 0)' > │ > | Rust _ => fun () => > │ > open rust.rust_operators > │ > > !\($'$"print\!(\\\"\\\\x1B[[1;1H\\\")"') > │ > | TypeScript _ => fun () => > │ > open typescript_operators > │ > > !\($'$"process.stdout.write(\'\\\\u001B[[1;1H\')"') > │ > | Python _ => fun () => > │ > open python_operators > │ > // global "import sys" > │ > > !\($'$"sys.stdout.write(\\\"\\\\033[[1;1H\\\")"') > │ > | Cuda _ => fun () => > │ > global "import sys" > │ > $'sys.stdout.write("\\033[[1;1H")' > │ > | _ => fun () => () > │ > frame |> console.write_line > │ > async.sleep 1 |> async.do > │ > if max > 0 && i >= max > │ > then () > │ > else > │ > { a = rot.a + 0.05; b = rot.b + 0.05; c = rot.c > + 0.01 } > │ > |> main_loop max (i + 1) > │ > |> async.return_await' > │ > |> async.new_async_unit > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### main > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > // [[<EntryPoint>]] > │ > let main argv = > │ > // Console.CursorVisible <- false > │ > Async.StartImmediate (mainLoop { a = 0.0; b = 0.0; c = > 0.0 }) > │ > System.Threading.Thread.Sleep(1000) > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > // main [[||]] > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl main (_args : array_base string) = > │ > inl console = > │ > run_target function > │ > | Fsharp (Wasm) => fun () => false > │ > | _ => fun () => > │ > ((join "VSCODE_PID") |> > env.get_environment_variable |> sm'.length > │ > |> (=) 0i32) > │ > && ("AUTOMATION" |> > env.get_environment_variable |> sm'.length > │ > |> (=) 0i32) > │ > if console then > │ > run_target function > │ > | Fsharp (Native) => fun () => > $'System.Console.CursorVisible <- > │ > false' > │ > | Rust _ => fun () => > │ > open rust.rust_operators > │ > !\($'$"print\!(\\\"\\\\x1B[[?25l\\\")"') > │ > | TypeScript _ => fun () => > │ > open typescript_operators > │ > > !\($'$"process.stdout.write(\'\\\\u001B[[?25l\')"') > │ > | Python _ => fun () => > │ > open python_operators > │ > python.import_all "sys" > │ > > !\($'$"sys.stdout.write(\\\"\\\\033[[?25l\\\")"') > │ > | _ => fun () => () > │ > main_loop (if console then -1i32 else 50) 1i32 { a = > 0.0; b = 0.0; c = 0.0 } > │ > |> fun x => > │ > run_target_args' x function > │ > | Fsharp (Wasm) > │ > | TypeScript _ => fun x => > │ > x > │ > |> async.start_child > │ > |> ignore > │ > | Python _ => fun x => > │ > x > │ > |> async.start_immediate > │ > threading.sleep' 2000 > │ > | _ => fun x => > │ > x > │ > |> async.run_synchronously > │ > > │ > inl main () = > │ > backend_switch { > │ > Fsharp = fun () => > │ > $'let main_ = !main ' > │ > $'#if \!FABLE_COMPILER_RUST' > │ > $'main_ [[||]]' : () > │ > $'#else' > │ > $'let main args = main_ [[||]]; 0' : () > │ > $'#endif' : () > │ > Python = fun () => > │ > main ;[[]] > │ > } > │ > : () > │ > > │ > ── [ 3.35s - stdout ] > ────────────────────────────────────────────────────────── > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\............................................................. > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\............................................................. > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\................<<<<<<<<<.................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .;;;;;;;;;;;;;;;;;\............................................................. > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > .<<<<<<<<<<<<<<<<<\............................................................. > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > .;;;;;;;;;;;;;;;;;;\............................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > .;;;;;;;;;;;;;;;;;;\............................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > .;;;;;;;;;;;;;;;;;;;................;;;;;<<<<................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > .;;;;;;;;;;;;;;;;;;;................<<<<<....................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > .;;;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > .<<<<<<<<<<<<<<<<<<<............................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > ................................................................................ > │ > │ > │ > > ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\.................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > .;;;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > .;;;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > .;;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;................................... > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > .;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;................................... > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > .;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;................................... > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > .;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;................................... > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > .;;;;;;;;;;;;;;;;;;;.............../<<<<<<<<<................................... > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > ..;;;;;;;;;;;;;;;;;;...............<<<<<<<<<.................................... > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > ..;;;;;;;;;;<<<<<<<<............................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > ..<<<<<<<<<<.................................................................... > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > │ > > ................................................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > │ > > ................................................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > │ > > ................................................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<\................. > │ > > ................................................................................ > │ > │ > │ > > .....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<............................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;............................................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > ..............;;;;;;............................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > .>;;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > ./;;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > ./;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;................................... > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > ./;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;................................... > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > │ > > ./;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;................................... > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > │ > > ./;;;;;;;;;;;;;;;;;;\............../;;;;;;;;;................................... > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > ./;;;;;;;;;;;;;;;;;;;............../<<<<<<<<<................................... > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > ./;;;;;;;;;;;;;;;;;;;............../<<<<<<<<.................................... > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > ./<<<<<<<<<<<<<<<<<<<........................................................... > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > ./<<<<<<<<<<<<<<<............................................................... > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<................ > │ > > ................................................................................ > │ > │ > │ > > ......................<<<<<<<<<<................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > ..;;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > .>;;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > ./;;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > │ > > >/;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;................................... > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > ./;;;;;;;;;;;;;;;;;;\............../;;;;;;;;;................................... > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > ./;;;;;;;;;;;;;;;;;;;............../;;;;;;;;;................................... > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > ./;;;;;;;;;;;;;;;;;;;............../;;;;;;;;;\.................................. > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ > │ > > .//;;;;;;;;;;;;;;;;;;............../<<<<<<<<<\.................................. > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > │ > > .//;;;;;;;;;;;;;;;;;;............../<<<<<<<<.................................... > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > │ > > .//<<<<<<<<<<<<<<<<<<........................................................... > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > │ > > ./<<<<<<<<<<<<<<<<.............................................................. > │ > │ > │ > > ........................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... > │ > > ................................................................................ > │ > │ > │ > > ........................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... > │ > > ................................................................................ > │ > │ > │ > > ........................;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<............... > │ > > ................................................................................ > │ > │ > │ > > ........................<<<<<<<<<<<<<<<<<<<<<<.................................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................... > │ > > ................................................................................ > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > ..;;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > .>;;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > │ > > >/;;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > //;;;;;;;;;;;;;;;;;;\..............>;;;;;;;;;................................... > │ > │ > │ > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > ///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;................................... > │ > │ > │ > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ > │ > > ///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;\.................................. > │ > │ > │ > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > │ > > ///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;;.................................. > │ > │ > │ > > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > │ > > .//;;;;;;;;;;;;;;;;;;;.............//<<<<<<<<<.................................. > │ > │ > │ > > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... > │ > > .//;;;;;;;;;;;;;;;;<<<............./<<<<<<<<.................................... > │ > │ > │ > > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... > │ > > .///<<<<<<<<<<<<<<<<<........................................................... > │ > │ > │ > > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. > │ > > ./<<<<<<<<<<<<<<<<.............................................................. > │ > │ > │ > > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. > │ > > ................................................................................ > │ > │ > │ > > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<.............. > │ > > ................................................................................ > │ > │ > │ > > .......................//;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<................... > │ > > ................................................................................ > │ > │ > │ > > .......................//<<<<<<<<<<<<<<<<<<<<<<<<<.............................. > │ > > ................................................................................ > │ > │ > │ > > ........................<<<<<<<................................................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... > │ > > ................................................................................ > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... > │ > > ................................................................................ > │ > │ > │ > > ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > .....................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > ..;;;;;;;;;;;;;;;;;............................................................. > │ > │ > │ > > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > .>;;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > │ > > >//;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > ///;;;;;;;;;;;;;;;;;\..............>;;;;;;;;;................................... > │ > │ > │ > > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ > │ > > ///;;;;;;;;;;;;;;;;;;.............>/;;;;;;;;;................................... > │ > │ > │ > > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > │ > > ///;;;;;;;;;;;;;;;;;;.............//;;;;;;;;;\.................................. > │ > │ > │ > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... > │ > > ////;;;;;;;;;;;;;;;;;;.............//;;;;;;;;;.................................. > │ > │ > │ > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... > │ > > ////;;;;;;;;;;;;;;;;;;.............//<<<<<<<<<.................................. > │ > │ > │ > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. > │ > > ////;;;;;;;<<<<<<<<<<<............./<<<<<<<<.................................... > │ > │ > │ > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. > │ > > .///<<<<<<<<<<<<<<<<<........................................................... > │ > │ > │ > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. > │ > > .//<<<<<<<<<<<<<<<.............................................................. > │ > │ > │ > > .......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<............. > │ > > .<<<............................................................................ > │ > │ > │ > > .......................////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<............... > │ > > ................................................................................ > │ > │ > │ > > .......................////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...................... > │ > > ................................................................................ > │ > │ > │ > > .......................////<<<<<<<<<<<<<<<<<<<<<<<<<............................ > │ > > ................................................................................ > │ > │ > │ > > .......................//<<<<<<<<<<<<<.......................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... > │ > > ................................................................................ > │ > │ > │ > > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... > │ > > ................................................................................ > │ > │ > │ > > ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................... > │ > > ................................................................................ > │ > │ > │ > > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > .....................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > ..;;;;;;;;;;;;;;;;;............................................................. > │ > │ > │ > > ....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > .>/;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > >//;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...............> > │ > > ///;;;;;;;;;;;;;;;;;;..............>;;;;;;;;;................................... > │ > │ > │ > > ...................../////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............../ > │ > > ////;;;;;;;;;;;;;;;;;.............//;;;;;;;;;................................... > │ > │ > │ > > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............../ > │ > > ////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;.................................. > │ > │ > │ > > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... > │ > > ////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;.................................. > │ > │ > │ > > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. > │ > > ////;;;;;;;;;;;;;;;;;;;............//;<<<<<<<<.................................. > │ > │ > │ > > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. > │ > > /////<<<<<<<<<<<<<<<<<<............/<<<<<<<<.................................... > │ > │ > │ > > ......................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. > │ > > .///<<<<<<<<<<<<<<<<............................................................ > │ > │ > │ > > ......................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<............ > │ > > .//<<<<<<<<<<<<<<<.............................................................. > │ > │ > │ > > ......................//////;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<............. > │ > > .<<<<<<......................................................................... > │ > │ > │ > > ......................///////;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................. > │ > > ................................................................................ > │ > │ > │ > > .......................//////<<<<<<<<<<<<<<<<<<<<<<<<<<<<....................... > │ > > ................................................................................ > │ > │ > │ > > .......................////<<<<<<<<<<<<<<<<<<<<<<<<<<........................... > │ > > ................................................................................ > │ > │ > │ > > .......................///<<<<<<<<<<<<<<<<...................................... > │ > > ................................................................................ > │ > │ > │ > > ......................./<<<<<................................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ........................;;;;;;.................................................. > │ > > ................................................................................ > │ > │ > │ > > .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................... > │ > > ................................................................................ > │ > │ > │ > > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... > │ > > ................................................................................ > │ > │ > │ > > ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... > │ > > ................................................................................ > │ > │ > │ > > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................... > │ > > ................................................................................ > │ > │ > │ > > .....................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ...................../////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > ....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > ..;;;;;;;;;;;;;;;;;............................................................. > │ > │ > │ > > ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > │ > > .>/;;;;;;;;;;;;;;;;\............................................................ > │ > │ > │ > > ...................>///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > >//;;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ...................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............../ > │ > > ///;;;;;;;;;;;;;;;;;;..............>;;;;;;;;;................................... > │ > │ > │ > > ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............../ > │ > > ////;;;;;;;;;;;;;;;;;\............>/;;;;;;;;;\.................................. > │ > │ > │ > > ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............./ > │ > > ////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;.................................. > │ > │ > │ > > ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............./ > │ > > /////;;;;;;;;;;;;;;;;;;...........///;;;;;;;<<\................................. > │ > │ > │ > > .....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. > │ > > /////;;;;;;;;;;;;;;<<<<............///<<<<<<<<.................................. > │ > │ > │ > > .....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............ > │ > > //////<<<<<<<<<<<<<<<<<............//<<<<<<<.................................... > │ > │ > │ > > ...................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ > │ > > /////<<<<<<<<<<<<<<<............................................................ > │ > │ > │ > > ...................../////////;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<............ > │ > > .//<<<<<<<<<<<<<<<.............................................................. > │ > │ > │ > > ......................////////;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<................ > │ > > ./<<<<<<<<...................................................................... > │ > │ > │ > > ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<................... > │ > > ................................................................................ > │ > │ > │ > > ......................////////<<<<<<<<<<<<<<<<<<<<<<<<<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ......................./////<<<<<<<<<<<<<<<<<<<<<<<<<........................... > │ > > ................................................................................ > │ > │ > │ > > .......................///<<<<<<<<<<<<<<<<<<<<.................................. > │ > > ................................................................................ > │ > │ > │ > > .......................//<<<<<<<<<.............................................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ........................;;;;;;;;;............................................... > │ > > ................................................................................ > │ > │ > │ > > .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................ > │ > > ................................................................................ > │ > │ > │ > > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................... > │ > > ................................................................................ > │ > │ > │ > > ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... > │ > > ................................................................................ > │ > │ > │ > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... > │ > > ................................................................................ > │ > │ > │ > > .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > ..;;;;;;;;;;;;;;;;;............................................................. > │ > │ > │ > > ...................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > │ > > .>/;;;;;;;;;;;;;;;;\............................................................ > │ > │ > │ > > .................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ > │ > > >///;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ..................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............> > │ > > ////;;;;;;;;;;;;;;;;;..............>;;;;;;;;;................................... > │ > │ > │ > > ...................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............>/ > │ > > ////;;;;;;;;;;;;;;;;;;............>//;;;;;;;;\.................................. > │ > │ > │ > > ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............// > │ > > /////;;;;;;;;;;;;;;;;;\...........///;;;;;;;;;.................................. > │ > │ > │ > > ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............/ > │ > > //////;;;;;;;;;;;;;;;;;...........////;;;<<<<<<................................. > │ > │ > │ > > ....................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........../ > │ > > ///////;;;;;;;<<<<<<<<<<...........///<<<<<<<<.................................. > │ > │ > │ > > ....................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........... > │ > > ///////<<<<<<<<<<<<<<<.............//<<<<<<<.................................... > │ > │ > │ > > .....................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<........... > │ > > /////<<<<<<<<<<<<<<<............................................................ > │ > │ > │ > > .....................///////////;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<.............. > │ > > .///<<<<<<<<<<<<<<.............................................................. > │ > │ > │ > > .....................////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<................. > │ > > .//<<<<<<<<<.................................................................... > │ > │ > │ > > ......................//////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................... > │ > > ................................................................................ > │ > │ > │ > > ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ......................///////<<<<<<<<<<<<<<<<<<<<<<<<<.......................... > │ > > ................................................................................ > │ > │ > │ > > ......................./////<<<<<<<<<<<<<<<<<<<<................................ > │ > > ................................................................................ > │ > │ > │ > > .......................///<<<<<<<<<<<<.......................................... > │ > > ................................................................................ > │ > │ > │ > > ........................<<<<<................................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ........................;;;;;;;;;;.............................................. > │ > > ................................................................................ > │ > │ > │ > > .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................... > │ > > ................................................................................ > │ > │ > │ > > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................ > │ > > ................................................................................ > │ > │ > │ > > ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................... > │ > > ................................................................................ > │ > │ > │ > > .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... > │ > > ................................................................................ > │ > │ > │ > > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... > │ > > ................................................................................ > │ > │ > │ > > ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > │ > > ................................................................................ > │ > │ > │ > > ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > ../;;;;;;;;;;;;;;;.............................................................. > │ > │ > │ > > ...................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > │ > > .>/;;;;;;;;;;;;;;;;............................................................. > │ > │ > │ > > ..................>//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > │ > > >///;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ..................////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............> > │ > > ////;;;;;;;;;;;;;;;;;..............>;;;;;;;;;................................... > │ > │ > │ > > ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............>/ > │ > > /////;;;;;;;;;;;;;;;;;............>//;;;;;;;;\.................................. > │ > │ > │ > > ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...........// > │ > > //////;;;;;;;;;;;;;;;;;..........////;;;;;;;;;\................................. > │ > │ > │ > > .................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........// > │ > > //////;;;;;;;;;;;;;;;;;;..........////;<<<<<<<<................................. > │ > │ > │ > > .................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........../ > │ > > ///////;;<<<<<<<<<<<<<<<...........///<<<<<<<<.................................. > │ > │ > │ > > ..................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<........... > │ > > ////////<<<<<<<<<<<<<<.............//<<<<<<<.................................... > │ > │ > │ > > ....................//////////////;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<............. > │ > > //////<<<<<<<<<<<<<<............................................................ > │ > │ > │ > > ....................//////////////;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<............... > │ > > .////<<<<<<<<<<<<<.............................................................. > │ > │ > │ > > ...................../////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................. > │ > > ..<<<<<<<<<<<................................................................... > │ > │ > │ > > .....................////////////<<<<<<<<<<<<<<<<<<<<<<<<<<..................... > │ > > ................................................................................ > │ > │ > │ > > ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ......................///////<<<<<<<<<<<<<<<<<<<<<<<<<.......................... > │ > > ................................................................................ > │ > │ > │ > > ......................./////<<<<<<<<<<<<<<<<<<<<<<.............................. > │ > > ................................................................................ > │ > │ > │ > > .......................////<<<<<<<<<<<<<<....................................... > │ > > ................................................................................ > │ > │ > │ > > ......................../<<<<<<<<............................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ........................;;;;;;;;;............................................... > │ > > ................................................................................ > │ > │ > │ > > .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................... > │ > > ................................................................................ > │ > │ > │ > > ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................... > │ > > ................................................................................ > │ > │ > │ > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................ > │ > > ................................................................................ > │ > │ > │ > > .....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... > │ > > ................................................................................ > │ > │ > │ > > ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... > │ > > ................................................................................ > │ > │ > │ > > ....................>///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ...................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > ..;;;;;;;;;;;;;;;;.............................................................. > │ > │ > │ > > ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > .>//;;;;;;;;;;;;;;;............................................................. > │ > │ > │ > > ..................>////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > │ > > >///;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............> > │ > > /////;;;;;;;;;;;;;;;;..............>;;;;;;;;\................................... > │ > │ > │ > > .................>//////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...........>/ > │ > > //////;;;;;;;;;;;;;;;;............>//;;;;;;;;\.................................. > │ > │ > │ > > .................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........./// > │ > > //////;;;;;;;;;;;;;;;;;..........>////;;;;;;;;;................................. > │ > │ > │ > > ..................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........// > │ > > ///////;;;;;;;;;;;;<<<<<........../////<<<<<<<<................................. > │ > │ > │ > > ................../////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<........./ > │ > > ////////;<<<<<<<<<<<<<<...........////<<<<<<<<.................................. > │ > │ > │ > > ...................////////////////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<.........../ > │ > > ////////<<<<<<<<<<<<<<.............//<<<<<<<.................................... > │ > │ > │ > > .................../////////////////;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<.............. > │ > > //////<<<<<<<<<<<<<<............................................................ > │ > │ > │ > > ....................////////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<................. > │ > > .///<<<<<<<<<<<<<<.............................................................. > │ > │ > │ > > .....................//////////////<<<<<<<<<<<<<<<<<<<<<<<<<<................... > │ > > ..//<<<<<<<<<<.................................................................. > │ > │ > │ > > ...................../////////////<<<<<<<<<<<<<<<<<<<<<<<<<..................... > │ > > ..<............................................................................. > │ > │ > │ > > ......................//////////<<<<<<<<<<<<<<<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ....................../////////<<<<<<<<<<<<<<<<<<<<<<<.......................... > │ > > ................................................................................ > │ > │ > │ > > .......................//////<<<<<<<<<<<<<<<<<<<<<<............................. > │ > > ................................................................................ > │ > │ > │ > > ........................////<<<<<<<<<<<<<<<..................................... > │ > > ................................................................................ > │ > │ > │ > > ........................//<<<<<<<<<<............................................ > │ > > ................................................................................ > │ > │ > │ > > .........................<<<.................................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .......................>;;;;;;;;................................................ > │ > > ................................................................................ > │ > │ > │ > > .......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;\........................... > │ > > ................................................................................ > │ > │ > │ > > ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................... > │ > > ................................................................................ > │ > │ > │ > > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........................ > │ > > ................................................................................ > │ > │ > │ > > .....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................... > │ > > ................................................................................ > │ > │ > │ > > ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................... > │ > > ................................................................................ > │ > │ > │ > > ..................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > ..;;;;;;;;;;;;;;;\.............................................................. > │ > │ > │ > > ..................>/////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > .>/;;;;;;;;;;;;;;;;............................................................. > │ > │ > │ > > ..................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > │ > > >///;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > .................>////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............> > │ > > /////;;;;;;;;;;;;;;;;..............>/;;;;;;;\................................... > │ > │ > │ > > ................>//////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..........>/ > │ > > //////;;;;;;;;;;;;;;;;\...........>///;;;;;;;\.................................. > │ > │ > │ > > ................>///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........>// > │ > > ///////;;;;;;;;;;;;;;;;;.........>////;;;;;;;;;................................. > │ > │ > │ > > .................///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<......./// > │ > > ////////;;;;;;<<<<<<<<<<.........//////<<<<<<<<................................. > │ > │ > │ > > ................./////////////////////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<.........// > │ > > /////////<<<<<<<<<<<<<<...........////<<<<<<<<.................................. > │ > │ > │ > > ..................////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<<<<............/ > │ > > ////////<<<<<<<<<<<<<..............//<<<<<<<.................................... > │ > │ > │ > > ...................////////////////////<<<<<<<<<<<<<<<<<<<<<<<<<<............... > │ > > ///////<<<<<<<<<<<<<............................................................ > │ > │ > │ > > ...................//////////////////<<<<<<<<<<<<<<<<<<<<<<<<<.................. > │ > > .////<<<<<<<<<<<<<.............................................................. > │ > │ > │ > > ....................////////////////<<<<<<<<<<<<<<<<<<<<<<<<.................... > │ > > ..//<<<<<<<<<<<................................................................. > │ > │ > │ > > .....................//////////////<<<<<<<<<<<<<<<<<<<<<<<...................... > │ > > ...<<........................................................................... > │ > │ > │ > > ......................////////////<<<<<<<<<<<<<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ......................//////////<<<<<<<<<<<<<<<<<<<<<<.......................... > │ > > ................................................................................ > │ > │ > │ > > .......................///////<<<<<<<<<<<<<<<<<<<<<<............................ > │ > > ................................................................................ > │ > │ > │ > > ......................../////<<<<<<<<<<<<<<<<................................... > │ > > ................................................................................ > │ > │ > │ > > ........................////<<<<<<<<<<.......................................... > │ > > ................................................................................ > │ > │ > │ > > ........................./<<<<<<................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .......................;;;;;;;.................................................. > │ > > ................................................................................ > │ > │ > │ > > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;............................. > │ > > ................................................................................ > │ > │ > │ > > ......................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;........................... > │ > > ................................................................................ > │ > │ > │ > > .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................... > │ > > ................................................................................ > │ > │ > │ > > .....................///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................ > │ > > ................................................................................ > │ > │ > │ > > ....................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... > │ > > ................................................................................ > │ > │ > │ > > ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > ../;;;;;;;;;;;;;;............................................................... > │ > │ > │ > > ..................>/////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > .>/;;;;;;;;;;;;;;;;............................................................. > │ > │ > │ > > ..................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... > │ > > >///;;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > .................>//////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............> > │ > > ///////;;;;;;;;;;;;;;..............>/;;;;;;;.................................... > │ > │ > │ > > ................>////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........>/ > │ > > ////////;;;;;;;;;;;;;;;...........>///;;;;;;;;.................................. > │ > │ > │ > > ................/////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<.......>// > │ > > /////////;;;;;;;;;;;;;;<.........>////;;;;;;;;<................................. > │ > │ > │ > > ...............////////////////////////;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<......../// > │ > > /////////;<<<<<<<<<<<<<<.........//////;<<<<<<<................................. > │ > │ > │ > > ................////////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<<...........// > │ > > //////////<<<<<<<<<<<<<.........../////<<<<<<<.................................. > │ > │ > │ > > .................////////////////////////<<<<<<<<<<<<<<<<<<<<<<<<<............./ > │ > > /////////<<<<<<<<<<<<..............//<<<<<<<.................................... > │ > │ > │ > > ..................//////////////////////<<<<<<<<<<<<<<<<<<<<<<<<................ > │ > > ////////<<<<<<<<<<<<............................................................ > │ > │ > │ > > ...................///////////////////<<<<<<<<<<<<<<<<<<<<<<<<.................. > │ > > ./////<<<<<<<<<<<<.............................................................. > │ > │ > │ > > ..................../////////////////<<<<<<<<<<<<<<<<<<<<<<<.................... > │ > > ..///<<<<<<<<<<................................................................. > │ > │ > │ > > .....................///////////////<<<<<<<<<<<<<<<<<<<<<<...................... > │ > > .../<<<......................................................................... > │ > │ > │ > > .....................//////////////<<<<<<<<<<<<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ......................///////////<<<<<<<<<<<<<<<<<<<<<.......................... > │ > > ................................................................................ > │ > │ > │ > > ......................./////////<<<<<<<<<<<<<<<<<<<<............................ > │ > > ................................................................................ > │ > │ > │ > > ........................///////<<<<<<<<<<<<<<<.................................. > │ > > ................................................................................ > │ > │ > │ > > .........................////<<<<<<<<<<<........................................ > │ > > ................................................................................ > │ > │ > │ > > ..........................//<<<<<<<............................................. > │ > > ................................................................................ > │ > │ > │ > > ...........................<<................................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .......................;;;;..................................................... > │ > > ................................................................................ > │ > │ > │ > > ......................>/;;;;;;;;;;;;;;;;;;;;;;;;................................ > │ > > ................................................................................ > │ > │ > │ > > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;............................. > │ > > ................................................................................ > │ > │ > │ > > .....................>////;/;;;;;;;;;;;;;;;;;;;;;;;;;........................... > │ > > ................................................................................ > │ > │ > │ > > ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;......................... > │ > > ................................................................................ > │ > │ > │ > > ....................>////////;/;;;;;;;;;;;;;;;;;;;;;;;;;;....................... > │ > > ................................................................................ > │ > │ > │ > > ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................... > │ > > ................................................................................ > │ > │ > │ > > ...................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > │ > > ..;;;;;;;;;;;;;;\............................................................... > │ > │ > │ > > ..................>////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ > │ > > .>/;;;;;;;;;;;;;;;.............................................................. > │ > │ > │ > > .................>///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. > │ > > >///;/;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ................./////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...........> > │ > > //////;;;;;;;;;;;;;;;;.............>/;;;;;;;.................................... > │ > │ > │ > > ................>//////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........>/ > │ > > ///////;/;;;;;;;;;;;;;;...........>///;;;;;;;;.................................. > │ > │ > │ > > ...............>////////////////////////;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<.......>// > │ > > /////////;;;;;;;;;<<<<<<.........>////;;;;;;<<<................................. > │ > │ > │ > > ...............>//////////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<........./// > │ > > //////////;<<<<<<<<<<<<<.........///////<<<<<<<................................. > │ > │ > │ > > ...............///////////////////////////<<<<<<<<<<<<<<<<<<<<<<<<.........../// > │ > > //////////<<<<<<<<<<<<............/////<<<<<<................................... > │ > │ > │ > > ................//////////////////////////<<<<<<<<<<<<<<<<<<<<<<.............../ > │ > > /////////<<<<<<<<<<<<..............///<<<<<<.................................... > │ > │ > │ > > .................///////////////////////<<<<<<<<<<<<<<<<<<<<<<<................. > │ > > ///////<<<<<<<<<<<<..................<.......................................... > │ > │ > │ > > ..................//////////////////////<<<<<<<<<<<<<<<<<<<<<................... > │ > > .//////<<<<<<<<<<<.............................................................. > │ > │ > │ > > ...................//////////////////<<<<<<<<<<<<<<<<<<<<<<..................... > │ > > ...//<<<<<<<<<<................................................................. > │ > │ > │ > > ....................////////////////<<<<<<<<<<<<<<<<<<<<<<...................... > │ > > ..../<<<........................................................................ > │ > │ > │ > > .....................///////////////<<<<<<<<<<<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ....................../////////////<<<<<<<<<<<<<<<<<<<.......................... > │ > > ................................................................................ > │ > │ > │ > > .......................//////////<<<<<<<<<<<<<<<<<<<<........................... > │ > > ................................................................................ > │ > │ > │ > > ........................////////<<<<<<<<<<<<<<<................................. > │ > > ................................................................................ > │ > │ > │ > > ..........................////<<<<<<<<<<<<...................................... > │ > > ................................................................................ > │ > │ > │ > > ..........................////<<<<<<<........................................... > │ > > ................................................................................ > │ > │ > │ > > ............................<<<<................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .......................;;....................................................... > │ > > ................................................................................ > │ > │ > │ > > ......................>;;;;;;;;;;;;;;;;;;;;..................................... > │ > > ................................................................................ > │ > │ > │ > > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;.............................. > │ > > ................................................................................ > │ > │ > │ > > .....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;............................ > │ > > ................................................................................ > │ > │ > │ > > ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;\......................... > │ > > ................................................................................ > │ > │ > │ > > ....................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;....................... > │ > > ................................................................................ > │ > │ > │ > > ...................>////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... > │ > > ................................................................................ > │ > │ > │ > > ..................>///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > │ > > .>/;;;;;;;;;;;;;................................................................ > │ > │ > │ > > ..................///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > │ > > >//;;;;;;;;;;;;;;;.............................................................. > │ > │ > │ > > .................>////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. > │ > > >////;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > .................///////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........> > │ > > ///////;;;;;;;;;;;;;;;.............>/;;;;;;;.................................... > │ > │ > │ > > ................>/////////////////////////;;;;;;;;;;;;;;;;;;<<<<<<<<<.........>/ > │ > > ////////;;;;;;;;;;;;;;;;..........>//;;;;;;;;;.................................. > │ > │ > │ > > ...............>/////////////////////////////;;;<<<<<<<<<<<<<<<<<<<<.........>// > │ > > //////////;;;<<<<<<<<<<<.........>/////;;;<<<<<................................. > │ > │ > │ > > ...............//////////////////////////////<<<<<<<<<<<<<<<<<<<<<<.........//// > │ > > ////////////<<<<<<<<<<<..........///////<<<<<<<................................. > │ > │ > │ > > ..............>////////////////////////////<<<<<<<<<<<<<<<<<<<<<<............/// > │ > > ///////////<<<<<<<<<<<............/////<<<<<<................................... > │ > │ > │ > > ...............////////////////////////////<<<<<<<<<<<<<<<<<<<<...............// > │ > > //////////<<<<<<<<<<<..............///<<<<<<.................................... > │ > │ > │ > > ................/////////////////////////<<<<<<<<<<<<<<<<<<<<<.................. > │ > > ////////<<<<<<<<<<<..................<.......................................... > │ > │ > │ > > .................///////////////////////<<<<<<<<<<<<<<<<<<<<<................... > │ > > .//////<<<<<<<<<<<.............................................................. > │ > │ > │ > > ...................////////////////////<<<<<<<<<<<<<<<<<<<<..................... > │ > > ...///<<<<<<<<<<................................................................ > │ > │ > │ > > ....................//////////////////<<<<<<<<<<<<<<<<<<<<...................... > │ > > ..../<<<<....................................................................... > │ > │ > │ > > .....................////////////////<<<<<<<<<<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ......................//////////////<<<<<<<<<<<<<<<<<<.......................... > │ > > ................................................................................ > │ > │ > │ > > ........................///////////<<<<<<<<<<<<<<<<<<........................... > │ > > ................................................................................ > │ > │ > │ > > .........................////////<<<<<<<<<<<<<<<................................ > │ > > ................................................................................ > │ > │ > │ > > ..........................//////<<<<<<<<<<<..................................... > │ > > ................................................................................ > │ > │ > │ > > ...........................////<<<<<<<<......................................... > │ > > ................................................................................ > │ > │ > │ > > ............................//<<<<.............................................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ....................../;;;;;;;;;;;;;;;;......................................... > │ > > ................................................................................ > │ > │ > │ > > .....................>///;;;;;;;;;;;;;;;;;;;;;;;................................ > │ > > ................................................................................ > │ > │ > │ > > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;............................. > │ > > ................................................................................ > │ > │ > │ > > ..................../////////;;;;;;;;;;;;;;;;;;;;;;;;........................... > │ > > ................................................................................ > │ > │ > │ > > ...................>///////////;/;;;;;;;;;;;;;;;;;;;;;;;........................ > │ > > ................................................................................ > │ > │ > │ > > ...................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;..................... > │ > > ................................................................................ > │ > │ > │ > > ..................>/////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > .>;;;;;;;;;;;;;................................................................. > │ > │ > │ > > ..................////////////////////;/;;;;;;;;;;;;;;;;;;;;;;;;................ > │ > > >//;/;;;;;;;;;;;;............................................................... > │ > │ > │ > > .................>//////////////////////;/;;;;;;;;;;;;;;;;;;;;;;;;;\............ > │ > > //////;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ................>//////////////////////////;;;;;;;;;;;;;;;;;;;<<<<<<<..........> > │ > > ///////;;;;;;;;;;;;;;;.............>/;;;;;;;.................................... > │ > │ > │ > > ................/////////////////////////////;;;;<<<<<<<<<<<<<<<<<<<..........>/ > │ > > ///////////;;;;;;;;;;;<<..........>//;;;;;;;;;.................................. > │ > │ > │ > > ...............>//////////////////////////////<<<<<<<<<<<<<<<<<<<<<..........>// > │ > > ///////////;<<<<<<<<<<<<.........>/////;;<<<<<<................................. > │ > │ > │ > > ...............///////////////////////////////<<<<<<<<<<<<<<<<<<<............/// > │ > > ////////////<<<<<<<<<<<..........///////<<<<<<.................................. > │ > │ > │ > > ..............>//////////////////////////////<<<<<<<<<<<<<<<<<<<............//// > │ > > ///////////<<<<<<<<<<<............/////<<<<<<................................... > │ > │ > │ > > ..............//////////////////////////////<<<<<<<<<<<<<<<<<<<...............// > │ > > //////////<<<<<<<<<<<...............///<<<<<.................................... > │ > │ > │ > > ...............///////////////////////////<<<<<<<<<<<<<<<<<<<................... > │ > > /////////<<<<<<<<<<................../.......................................... > │ > │ > │ > > ................//////////////////////////<<<<<<<<<<<<<<<<<<.................... > │ > > .///////<<<<<<<<<<.............................................................. > │ > │ > │ > > ..................//////////////////////<<<<<<<<<<<<<<<<<<<..................... > │ > > ...////<<<<<<<<<................................................................ > │ > │ > │ > > ....................///////////////////<<<<<<<<<<<<<<<<<<....................... > │ > > ...../<<<....................................................................... > │ > │ > │ > > ...................../////////////////<<<<<<<<<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ......................///////////////<<<<<<<<<<<<<<<<<<......................... > │ > > ................................................................................ > │ > │ > │ > > ........................////////////<<<<<<<<<<<<<<<<<........................... > │ > > ................................................................................ > │ > │ > │ > > .........................//////////<<<<<<<<<<<<<<............................... > │ > > ................................................................................ > │ > │ > │ > > ...........................///////<<<<<<<<<<<................................... > │ > > ................................................................................ > │ > │ > │ > > ............................/////<<<<<<<........................................ > │ > > ................................................................................ > │ > │ > │ > > ..............................//<<<<............................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .....................>;;;;;;;;;;;;.............................................. > │ > > ................................................................................ > │ > │ > │ > > .....................///;;;;;;;;;;;;;;;;;;;;;;.................................. > │ > > ................................................................................ > │ > │ > │ > > ....................>//////;;;;;;;;;;;;;;;;;;;;;;............................... > │ > > ................................................................................ > │ > │ > │ > > ..................../////////;/;;;;;;;;;;;;;;;;;;;;;\........................... > │ > > ................................................................................ > │ > │ > │ > > ...................>/////////////;;;;;;;;;;;;;;;;;;;;;;\........................ > │ > > ................................................................................ > │ > │ > │ > > ...................////////////////;/;;;;;;;;;;;;;;;;;;;;;;..................... > │ > > ................................................................................ > │ > │ > │ > > ..................>///////////////////;/;;;;;;;;;;;;;;;;;;;;;;.................. > │ > > .;;;;;;;;;;;;;.................................................................. > │ > │ > │ > > .................>///////////////////////;;;;;;;;;;;;;;;;;;;;;;;;\.............. > │ > > >///;;;;;;;;;;;;;............................................................... > │ > │ > │ > > .................//////////////////////////;;;;;;;;;;;;;;;;;;;;;;<<<............ > │ > > /////;;;;;;;;;;;;;;;............................................................ > │ > │ > │ > > ................>/////////////////////////////;;;;<<<<<<<<<<<<<<<<<<...........> > │ > > ////////;/;;;;;;;;;;;;;............>/;;;;;;;.................................... > │ > │ > │ > > ................////////////////////////////////<<<<<<<<<<<<<<<<<<<...........>/ > │ > > //////////;;;;;;;<<<<<<<..........>//;;;;;;;;;.................................. > │ > │ > │ > > ...............>///////////////////////////////<<<<<<<<<<<<<<<<<<<...........>// > │ > > /////////////<<<<<<<<<<..........>///////<<<<<<................................. > │ > │ > │ > > ...............///////////////////////////////<<<<<<<<<<<<<<<<<<............./// > │ > > ////////////<<<<<<<<<<...........////////<<<<<.................................. > │ > │ > │ > > ..............>///////////////////////////////<<<<<<<<<<<<<<<<<.............>/// > │ > > ///////////<<<<<<<<<<............///////<<<<<................................... > │ > │ > │ > > ..............//////////////////////////////<<<<<<<<<<<<<<<<<<.............../// > │ > > ///////////<<<<<<<<<................///<<<<<.................................... > │ > │ > │ > > ..............//////////////////////////////<<<<<<<<<<<<<<<<<................../ > │ > > //////////<<<<<<<<<.................../......................................... > │ > │ > │ > > ...............////////////////////////////<<<<<<<<<<<<<<<<<.................... > │ > > ..///////<<<<<<<<<.............................................................. > │ > │ > │ > > ................./////////////////////////<<<<<<<<<<<<<<<<...................... > │ > > ....////<<<<<<<<................................................................ > │ > │ > │ > > ...................//////////////////////<<<<<<<<<<<<<<<<....................... > │ > > ....../<<<...................................................................... > │ > │ > │ > > .....................//////////////////<<<<<<<<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ....................../////////////////<<<<<<<<<<<<<<<<......................... > │ > > ................................................................................ > │ > │ > │ > > ........................//////////////<<<<<<<<<<<<<<<........................... > │ > > ................................................................................ > │ > │ > │ > > ..........................///////////<<<<<<<<<<<<............................... > │ > > ................................................................................ > │ > │ > │ > > ............................////////<<<<<<<<<<.................................. > │ > > ................................................................................ > │ > │ > │ > > .............................//////<<<<<<<...................................... > │ > > ................................................................................ > │ > │ > │ > > ...............................///<<<<.......................................... > │ > > ................................................................................ > │ > │ > │ > > .................................<.............................................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ...................../;;;;;;;;.................................................. > │ > > ................................................................................ > │ > │ > │ > > ....................>//;;;;;;;;;;;;;;;;;;;;;.................................... > │ > > ................................................................................ > │ > │ > │ > > ....................//////;;;;;;;;;;;;;;;;;;;;;................................. > │ > > ................................................................................ > │ > │ > │ > > ...................>//////////;/;;;;;;;;;;;;;;;;;;;............................. > │ > > ................................................................................ > │ > │ > │ > > ...................//////////////;/;;;;;;;;;;;;;;;;;;;;......................... > │ > > ................................................................................ > │ > │ > │ > > ..................>////////////////////;;;;;;;;;;;;;;;;;;;;..................... > │ > > ................................................................................ > │ > │ > │ > > ..................//////////////////////;;;;;;;;;;;;;;;;;;;;;;;................. > │ > > .;;;;;;;;;;;;\.................................................................. > │ > │ > │ > > .................>/////////////////////////;;;;;;;;;;;;;;;;;;;;;;;.............. > │ > > >/;;/;;;;;;;;;;;;............................................................... > │ > │ > │ > > .................////////////////////////////////;;;<<<<<<<<<<<<<<<<............ > │ > > /////;;/;;;;;;;;;;;;............................................................ > │ > │ > │ > > ................>/////////////////////////////////<<<<<<<<<<<<<<<<<............> > │ > > ////////;;;;;;;;;;;;;;;............;;;;;;;;;.................................... > │ > │ > │ > > ................/////////////////////////////////<<<<<<<<<<<<<<<<.............>/ > │ > > ////////////;;<<<<<<<<<<..........>////;;;;;;;;................................. > │ > │ > │ > > ...............>////////////////////////////////<<<<<<<<<<<<<<<<..............// > │ > > //////////////<<<<<<<<<...........//////;<<<<<<................................. > │ > │ > │ > > ...............////////////////////////////////<<<<<<<<<<<<<<<<..............>// > │ > > /////////////<<<<<<<<<...........>///////<<<<<.................................. > │ > │ > │ > > ..............>///////////////////////////////<<<<<<<<<<<<<<<<..............>/// > │ > > ////////////<<<<<<<<<............///////<<<<<................................... > │ > │ > │ > > ..............///////////////////////////////<<<<<<<<<<<<<<<<................/// > │ > > ///////////<<<<<<<<<................///<<<<<.................................... > │ > │ > │ > > .............>///////////////////////////////<<<<<<<<<<<<<<<.................../ > │ > > //////////<<<<<<<<<............................................................. > │ > │ > │ > > ..............//////////////////////////////<<<<<<<<<<<<<<<..................... > │ > > ..///////<<<<<<<<<.............................................................. > │ > │ > │ > > ................///////////////////////////<<<<<<<<<<<<<<<...................... > │ > > ..../////<<<<<<<................................................................ > │ > │ > │ > > ..................////////////////////////<<<<<<<<<<<<<<<....................... > │ > > ......./<<...................................................................... > │ > │ > │ > > ..................../////////////////////<<<<<<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ......................//////////////////<<<<<<<<<<<<<<<......................... > │ > > ................................................................................ > │ > │ > │ > > ........................///////////////<<<<<<<<<<<<<<........................... > │ > > ................................................................................ > │ > │ > │ > > ...........................///////////<<<<<<<<<<<<.............................. > │ > > ................................................................................ > │ > │ > │ > > ............................//////////<<<<<<<<<................................. > │ > > ................................................................................ > │ > │ > │ > > ..............................///////<<<<<<..................................... > │ > > ................................................................................ > │ > │ > │ > > ................................////<<<<........................................ > │ > > ................................................................................ > │ > │ > │ > > ...................................<............................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .....................;;;;;...................................................... > │ > > ................................................................................ > │ > │ > │ > > ....................>/;/;;;;;;;;;;;;;;.......................................... > │ > > ................................................................................ > │ > │ > │ > > ....................//////;/;;;;;;;;;;;;;;;;;................................... > │ > > ................................................................................ > │ > │ > │ > > ...................>//////////;;/;;;;;;;;;;;;;;;;;.............................. > │ > > ................................................................................ > │ > │ > │ > > ...................////////////////;;;;;;;;;;;;;;;;;;;;......................... > │ > > ................................................................................ > │ > │ > │ > > ..................>///////////////////////;;;;;;;;;;;;;;;;;..................... > │ > > ................................................................................ > │ > │ > │ > > ................../////////////////////////;;;;;;;;;;;;;;;;;;;;;................ > │ > > .;;;;;;;;;;;.................................................................... > │ > │ > │ > > .................>///////////////////////////////;;;;;<<<<<<<<<<<<<............. > │ > > >//;/;;;;;;;;;;;................................................................ > │ > │ > │ > > .................//////////////////////////////////<<<<<<<<<<<<<<<.............> > │ > > //////;//;;;;;;;;;;;............................................................ > │ > │ > │ > > ................>/////////////////////////////////<<<<<<<<<<<<<<<..............> > │ > > /////////;/;;;;;;;;;<<<<...........;;;;;;;;..................................... > │ > │ > │ > > ................//////////////////////////////////<<<<<<<<<<<<<<..............>/ > │ > > //////////////<<<<<<<<<...........>///;;;;;;;<<................................. > │ > │ > │ > > ...............>/////////////////////////////////<<<<<<<<<<<<<<<..............// > │ > > //////////////<<<<<<<<<...........///////;<<<<<................................. > │ > │ > │ > > .............../////////////////////////////////<<<<<<<<<<<<<<<..............>// > │ > > /////////////<<<<<<<<<...........>///////<<<<<.................................. > │ > │ > │ > > ..............>////////////////////////////////<<<<<<<<<<<<<<<..............>/// > │ > > ////////////<<<<<<<<<............///////<<<<<................................... > │ > │ > │ > > ..............>///////////////////////////////<<<<<<<<<<<<<<<...............//// > │ > > ////////////<<<<<<<<................////<<<<<................................... > │ > │ > │ > > ..............////////////////////////////////<<<<<<<<<<<<<<.................../ > │ > > ///////////<<<<<<<<............................................................. > │ > │ > │ > > .............>///////////////////////////////<<<<<<<<<<<<<<..................... > │ > > ..////////<<<<<<<<.............................................................. > │ > │ > │ > > .............../////////////////////////////<<<<<<<<<<<<<<...................... > │ > > .....////<<<<<<<................................................................ > │ > │ > │ > > .................//////////////////////////<<<<<<<<<<<<<<....................... > │ > > .......//<<..................................................................... > │ > │ > │ > > ....................///////////////////////<<<<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ......................////////////////////<<<<<<<<<<<<<......................... > │ > > ................................................................................ > │ > │ > │ > > ......................../////////////////<<<<<<<<<<<<........................... > │ > > ................................................................................ > │ > │ > │ > > .........................../////////////<<<<<<<<<<.............................. > │ > > ................................................................................ > │ > │ > │ > > .............................//////////<<<<<<<<................................. > │ > > ................................................................................ > │ > │ > │ > > ................................///////<<<<<.................................... > │ > > ................................................................................ > │ > │ > │ > > ..................................////<<<....................................... > │ > > ................................................................................ > │ > │ > │ > > .....................................<.......................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ....................;;.......................................................... > │ > > ................................................................................ > │ > │ > │ > > ....................//;/;;;;;;;;;............................................... > │ > > ................................................................................ > │ > │ > │ > > ...................>//////;;;/;;;;;;;;;;;;;..................................... > │ > > ................................................................................ > │ > │ > │ > > ...................////////////;;;;;;;;;;;;;;;;;................................ > │ > > ................................................................................ > │ > │ > │ > > ..................>/////////////////////;;;;;;;;;;;;;;.......................... > │ > > ................................................................................ > │ > │ > │ > > ..................>///////////////////////;;;/;;;;;;;;;;;;;;.................... > │ > > ................................................................................ > │ > │ > │ > > ................../////////////////////////////;;/;;;;;;;;;;;;;;;............... > │ > > ;;;;;;;;;;;..................................................................... > │ > │ > │ > > .................>//////////////////////////////////<<<<<<<<<<<<<<.............. > │ > > >/;/;;;;;;;;;;;;................................................................ > │ > │ > │ > > .................//////////////////////////////////<<<<<<<<<<<<<<..............> > │ > > ///////;;/;;;;;;;;;;;........................................................... > │ > │ > │ > > ................>//////////////////////////////////<<<<<<<<<<<<<...............> > │ > > //////////;;/;;;<<<<<<<............/;;;;;;;\.................................... > │ > │ > │ > > ................//////////////////////////////////<<<<<<<<<<<<<...............>/ > │ > > ///////////////<<<<<<<<...........>//;;/;;;;<<<................................. > │ > │ > │ > > ...............>//////////////////////////////////<<<<<<<<<<<<................// > │ > > //////////////<<<<<<<<............>///////<<<<.................................. > │ > │ > │ > > ...............>/////////////////////////////////<<<<<<<<<<<<<...............>// > │ > > /////////////<<<<<<<<............>///////<<<<<.................................. > │ > │ > │ > > .............../////////////////////////////////<<<<<<<<<<<<<................>// > │ > > /////////////<<<<<<<<............////////<<<<................................... > │ > │ > │ > > ..............>////////////////////////////////<<<<<<<<<<<<<................./// > │ > > ////////////<<<<<<<<................////<<<<<................................... > │ > │ > │ > > ............../////////////////////////////////<<<<<<<<<<<<...................// > │ > > ///////////<<<<<<<<............................................................. > │ > │ > │ > > .............>////////////////////////////////<<<<<<<<<<<<<..................... > │ > > ../////////<<<<<<<<............................................................. > │ > │ > │ > > .............////////////////////////////////<<<<<<<<<<<<<...................... > │ > > ...../////<<<<<<................................................................ > │ > │ > │ > > ................/////////////////////////////<<<<<<<<<<<<....................... > │ > > ........./<..................................................................... > │ > │ > │ > > .................../////////////////////////<<<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ....................../////////////////////<<<<<<<<<<<<......................... > │ > > ................................................................................ > │ > │ > │ > > ........................///////////////////<<<<<<<<<<........................... > │ > > ................................................................................ > │ > │ > │ > > ............................//////////////<<<<<<<<<............................. > │ > > ................................................................................ > │ > │ > │ > > ...............................//////////<<<<<<<................................ > │ > > ................................................................................ > │ > │ > │ > > ..................................///////<<<<<.................................. > │ > > ................................................................................ > │ > │ > │ > > ....................................////<<<..................................... > │ > > ................................................................................ > │ > │ > │ > > ......................................./........................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ...................;/;;;;;;;;................................................... > │ > > ................................................................................ > │ > │ > │ > > ...................//////;///;;;;;;;;;;......................................... > │ > > ................................................................................ > │ > │ > │ > > ..................>/////////////;;;;;;;;;;;;;;;................................. > │ > > ................................................................................ > │ > │ > │ > > ..................>////////////////////;//;;;;;;;;;;;;.......................... > │ > > ................................................................................ > │ > │ > │ > > ................../////////////////////////////;/;;;;;;;;;;;;................... > │ > > ................................................................................ > │ > │ > │ > > .................>///////////////////////////////////<<<<<<<<<<<<............... > │ > > ................................................................................ > │ > │ > │ > > .................>//////////////////////////////////<<<<<<<<<<<<................ > │ > > /;;/;;;;;;;;;;;................................................................. > │ > │ > │ > > .................///////////////////////////////////<<<<<<<<<<<<...............> > │ > > ///////;;;;;;;;;;;;;;........................................................... > │ > │ > │ > > ................>//////////////////////////////////<<<<<<<<<<<<................> > │ > > /////////////;;<<<<<<<<............;;;;;;;;..................................... > │ > │ > │ > > ................>//////////////////////////////////<<<<<<<<<<<................>/ > │ > > ///////////////<<<<<<<............>//;;/;;<<<<<................................. > │ > │ > │ > > ................//////////////////////////////////<<<<<<<<<<<<................>/ > │ > > ///////////////<<<<<<<............>///////<<<<.................................. > │ > │ > │ > > ...............>//////////////////////////////////<<<<<<<<<<<.................// > │ > > //////////////<<<<<<<............>///////<<<<<.................................. > │ > │ > │ > > ...............//////////////////////////////////<<<<<<<<<<<.................>// > │ > > /////////////<<<<<<<.............>///////<<<<................................... > │ > │ > │ > > ...............//////////////////////////////////<<<<<<<<<<<................./// > │ > > /////////////<<<<<<<................////<<<<<................................... > │ > │ > │ > > ..............>/////////////////////////////////<<<<<<<<<<<................../// > │ > > ////////////<<<<<<<............................................................. > │ > │ > │ > > ............../////////////////////////////////<<<<<<<<<<<...................... > │ > > ..//////////<<<<<<<............................................................. > │ > │ > │ > > .............//////////////////////////////////<<<<<<<<<<<...................... > │ > > ....../////<<<<<................................................................ > │ > │ > │ > > ..............////////////////////////////////<<<<<<<<<<<....................... > │ > > ........../<.................................................................... > │ > │ > │ > > ................./////////////////////////////<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > .....................////////////////////////<<<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ........................////////////////////<<<<<<<<<<.......................... > │ > > ................................................................................ > │ > │ > │ > > ............................////////////////<<<<<<<............................. > │ > > ................................................................................ > │ > │ > │ > > ................................///////////<<<<<<............................... > │ > > ................................................................................ > │ > │ > │ > > ...................................////////<<<<................................. > │ > > ................................................................................ > │ > │ > │ > > .......................................///<<.................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ...................;;;;;........................................................ > │ > > ................................................................................ > │ > │ > │ > > ..................>//////;;;;;;;;;;............................................. > │ > > ................................................................................ > │ > │ > │ > > ..................>//////////////;;;;/;;;;;;.................................... > │ > > ................................................................................ > │ > │ > │ > > ..................//////////////////////////;;;;;;;;;;.......................... > │ > > ................................................................................ > │ > │ > │ > > ..................//////////////////////////////////;/<<<<<<<<<................. > │ > > ................................................................................ > │ > │ > │ > > .................>///////////////////////////////////<<<<<<<<<<................. > │ > > ................................................................................ > │ > │ > │ > > .................////////////////////////////////////<<<<<<<<<<................. > │ > > ;/;;;;;;;;;;;;;................................................................. > │ > │ > │ > > .................///////////////////////////////////<<<<<<<<<<.................> > │ > > ///////;;;;;;;;;;;;;;<.......................................................... > │ > │ > │ > > ................>///////////////////////////////////<<<<<<<<<<................./ > │ > > //////////////;<<<<<<<.............;;;;;;;;..................................... > │ > │ > │ > > ................>///////////////////////////////////<<<<<<<<<................../ > │ > > ///////////////<<<<<<<............>//;;//;<<<<.................................. > │ > │ > │ > > ................///////////////////////////////////<<<<<<<<<<.................>/ > │ > > ///////////////<<<<<<.............>///////<<<<.................................. > │ > │ > │ > > ...............>//////////////////////////////////<<<<<<<<<<..................// > │ > > //////////////<<<<<<<.............////////<<<<.................................. > │ > │ > │ > > ...............>//////////////////////////////////<<<<<<<<<<..................// > │ > > ///////////////<<<<<.............>///////<<<<................................... > │ > │ > │ > > ...............///////////////////////////////////<<<<<<<<<..................>// > │ > > /////////////<<<<<<<................/////<<<<................................... > │ > │ > │ > > ...............//////////////////////////////////<<<<<<<<<<................../// > │ > > /////////////<<<<<<............................................................. > │ > │ > │ > > ..............>//////////////////////////////////<<<<<<<<<...................... > │ > > .///////////<<<<<<<............................................................. > │ > │ > │ > > ..............>/////////////////////////////////<<<<<<<<<<...................... > │ > > ......./////<<<<................................................................ > │ > │ > │ > > ..............//////////////////////////////////<<<<<<<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ...............////////////////////////////////<<<<<<<<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ....................///////////////////////////<<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ........................//////////////////////<<<<<<<<.......................... > │ > > ................................................................................ > │ > │ > │ > > ............................./////////////////<<<<<<............................ > │ > > ................................................................................ > │ > │ > │ > > .................................////////////<<<<<.............................. > │ > > ................................................................................ > │ > │ > │ > > ......................................///////<<<................................ > │ > > ................................................................................ > │ > │ > │ > > ..........................................//<<.................................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ..................;;;........................................................... > │ > > ................................................................................ > │ > │ > │ > > ..................//;;;;;;/;;;;;;;;............................................. > │ > > ................................................................................ > │ > │ > │ > > ..................////////////////;;//;;;;;;;;;;;............................... > │ > > ................................................................................ > │ > │ > │ > > .................>///////////////////////////////;;;/;<<<<<..................... > │ > > ................................................................................ > │ > │ > │ > > .................>////////////////////////////////////<<<<<<<<.................. > │ > > ................................................................................ > │ > │ > │ > > ................./////////////////////////////////////<<<<<<<<.................. > │ > > ................................................................................ > │ > │ > │ > > .................////////////////////////////////////<<<<<<<<<.................> > │ > > /;;;;;;;;;;;;;.................................................................. > │ > │ > │ > > .................////////////////////////////////////<<<<<<<<..................> > │ > > ///////;;;;;;;;/<<<<<<.......................................................... > │ > │ > │ > > ................>///////////////////////////////////<<<<<<<<<................../ > │ > > ////////////////<<<<<<.............;;;;;;;;..................................... > │ > │ > │ > > ................>///////////////////////////////////<<<<<<<<.................../ > │ > > ///////////////<<<<<<.............>//;;;//<<<<.................................. > │ > │ > │ > > ................////////////////////////////////////<<<<<<<<..................>/ > │ > > ///////////////<<<<<<.............>///////<<<<.................................. > │ > │ > │ > > ................///////////////////////////////////<<<<<<<<<..................>/ > │ > > //////////////<<<<<<..............////////<<<................................... > │ > │ > │ > > ................///////////////////////////////////<<<<<<<<...................// > │ > > //////////////<<<<<<..............///////<<<<................................... > │ > │ > │ > > ...............>///////////////////////////////////<<<<<<<<...................// > │ > > //////////////<<<<<<................/////<<<<................................... > │ > │ > │ > > ...............>//////////////////////////////////<<<<<<<<...................>// > │ > > /////////////<<<<<<............................................................. > │ > │ > │ > > ...............///////////////////////////////////<<<<<<<<...................... > │ > > .////////////<<<<<<............................................................. > │ > │ > │ > > ...............///////////////////////////////////<<<<<<<<...................... > │ > > ......../////<<<................................................................ > │ > │ > │ > > ..............>//////////////////////////////////<<<<<<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ..............>//////////////////////////////////<<<<<<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ..................//////////////////////////////<<<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ......................./////////////////////////<<<<<<.......................... > │ > > ................................................................................ > │ > │ > │ > > .............................///////////////////<<<<............................ > │ > > ................................................................................ > │ > │ > │ > > ...................................////////////<<<<............................. > │ > > ................................................................................ > │ > │ > │ > > .........................................//////<<............................... > │ > > ................................................................................ > │ > │ > │ > > ............................................../................................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .................>;;;;;;;;;;;;/;;;;;;;;......................................... > │ > > ................................................................................ > │ > │ > │ > > .................>////////////////////;;/;;/;;/;;;;;;;;<<....................... > │ > > ................................................................................ > │ > │ > │ > > .................>////////////////////////////////////<<<<<<.................... > │ > > ................................................................................ > │ > │ > │ > > ................./////////////////////////////////////<<<<<<<................... > │ > > ................................................................................ > │ > │ > │ > > ................./////////////////////////////////////<<<<<<<................... > │ > > ................................................................................ > │ > │ > │ > > ................./////////////////////////////////////<<<<<<...................; > │ > > ;;;;;/;;;;;;;................................................................... > │ > │ > │ > > .................////////////////////////////////////<<<<<<<...................> > │ > > ////////;;;///;;<<<<<........................................................... > │ > │ > │ > > ................>////////////////////////////////////<<<<<<<.................../ > │ > > ////////////////<<<<<..............;;;;;;;;..................................... > │ > │ > │ > > ................>////////////////////////////////////<<<<<<..................../ > │ > > ///////////////<<<<<<.............>//;;;;;<<<<.................................. > │ > │ > │ > > ................>////////////////////////////////////<<<<<<..................../ > │ > > ///////////////<<<<<..............>///////<<<<.................................. > │ > │ > │ > > ................>///////////////////////////////////<<<<<<<...................>/ > │ > > ///////////////<<<<<..............>///////<<<................................... > │ > │ > │ > > ................////////////////////////////////////<<<<<<<...................>/ > │ > > ///////////////<<<<<..............////////<<<................................... > │ > │ > │ > > ................////////////////////////////////////<<<<<<....................>/ > │ > > ///////////////<<<<<...............///////<<=................................... > │ > │ > │ > > ................////////////////////////////////////<<<<<<....................// > │ > > //////////////<<<<<............................................................. > │ > │ > │ > > ...............>///////////////////////////////////<<<<<<<...................../ > │ > > //////////////<<<<<............................................................. > │ > │ > │ > > ...............>///////////////////////////////////<<<<<<....................... > │ > > ........./////<<................................................................ > │ > │ > │ > > ...............>///////////////////////////////////<<<<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ...............>///////////////////////////////////<<<<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ...............///////////////////////////////////<<<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > ......................////////////////////////////<<<<<......................... > │ > > ................................................................................ > │ > │ > │ > > ..............................////////////////////<<<........................... > │ > > ................................................................................ > │ > │ > │ > > ...................................../////////////<<............................ > │ > > ................................................................................ > │ > │ > │ > > .............................................////<<............................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<........................ > │ > > ................................................................................ > │ > │ > │ > > .................//////////////////////////////////////<<<...................... > │ > > ................................................................................ > │ > │ > │ > > .................//////////////////////////////////////<<<<..................... > │ > > ................................................................................ > │ > │ > │ > > ................./////////////////////////////////////<<<<<..................... > │ > > ................................................................................ > │ > │ > │ > > ................./////////////////////////////////////<<<<<..................... > │ > > ................................................................................ > │ > │ > │ > > ................./////////////////////////////////////<<<<<....................; > │ > > ;/;;;;;;;;;;.................................................................... > │ > │ > │ > > ................./////////////////////////////////////<<<<<..................../ > │ > > ////////////;;;;<<<<............................................................ > │ > │ > │ > > ................./////////////////////////////////////<<<<<..................../ > │ > > ////////////////<<<<...............;;;;;;;;..................................... > │ > │ > │ > > ................>/////////////////////////////////////<<<<<..................../ > │ > > ////////////////<<<<..............>//;;;;;<<<<.................................. > │ > │ > │ > > ................>/////////////////////////////////////<<<<...................../ > │ > > ////////////////<<<<..............>///////<<<................................... > │ > │ > │ > > ................>////////////////////////////////////<<<<<...................../ > │ > > ///////////////<<<<<..............>///////<<<................................... > │ > │ > │ > > ................>////////////////////////////////////<<<<<...................../ > │ > > ///////////////<<<<<..............>///////<<<................................... > │ > │ > │ > > ................>////////////////////////////////////<<<<<...................../ > │ > > ///////////////<<<<<..............////////<<.................................... > │ > │ > │ > > ................>////////////////////////////////////<<<<<....................>/ > │ > > ///////////////<<<<............................................................. > │ > │ > │ > > ................>////////////////////////////////////<<<<<....................// > │ > > ///////////////<<<<............................................................. > │ > │ > │ > > ................>////////////////////////////////////<<<<....................... > │ > > ............///<................................................................ > │ > │ > │ > > ................>////////////////////////////////////<<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ................////////////////////////////////////<<<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ................////////////////////////////////////<<<<........................ > │ > > ................................................................................ > │ > │ > │ > > .................///////////////////////////////////<<<......................... > │ > > ................................................................................ > │ > │ > │ > > .............................///////////////////////<<.......................... > │ > > ................................................................................ > │ > │ > │ > > .........................................///////////<........................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<........................ > │ > > ................................................................................ > │ > │ > │ > > ................;//////////////////////////////////////<<....................... > │ > > ................................................................................ > │ > │ > │ > > ................>//////////////////////////////////////<<<...................... > │ > > ................................................................................ > │ > │ > │ > > ................>//////////////////////////////////////<<<...................... > │ > > ................................................................................ > │ > │ > │ > > ................>//////////////////////////////////////<<<...................... > │ > > ................................................................................ > │ > │ > │ > > ................>//////////////////////////////////////<<<.....................; > │ > > ;;;;;;;;;;;;;;;;<<<............................................................. > │ > │ > │ > > .................//////////////////////////////////////<<<...................../ > │ > > ////////////////<<<<............................................................ > │ > │ > │ > > .................//////////////////////////////////////<<<...................../ > │ > > ////////////////<<<<...............;;;;;;;;;<................................... > │ > │ > │ > > .................//////////////////////////////////////<<<...................../ > │ > > ////////////////<<<<..............;;;;;;;;;<<................................... > │ > │ > │ > > .................//////////////////////////////////////<<<...................../ > │ > > ////////////////<<<<..............>////////<<................................... > │ > │ > │ > > ................./////////////////////////////////////<<<<...................../ > │ > > ////////////////<<<<..............>////////<<................................... > │ > │ > │ > > ................./////////////////////////////////////<<<<...................../ > │ > > ////////////////<<<<..............>////////<<................................... > │ > │ > │ > > ................./////////////////////////////////////<<<<...................../ > │ > > ////////////////<<<<..............////////<<.................................... > │ > │ > │ > > ................./////////////////////////////////////<<<<...................../ > │ > > ////////////////<<<<............................................................ > │ > │ > │ > > ................./////////////////////////////////////<<<<.....................> > │ > > ////////////////<<.............................................................. > │ > │ > │ > > ................./////////////////////////////////////<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ................./////////////////////////////////////<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ................./////////////////////////////////////<<<....................... > │ > > ................................................................................ > │ > │ > │ > > ................./////////////////////////////////////<<<....................... > │ > > ................................................................................ > │ > │ > │ > > .................>////////////////////////////////////<<........................ > │ > > ................................................................................ > │ > │ > │ > > ..........................////////////////////////////<<........................ > │ > > ................................................................................ > │ > │ > │ > > ................................................//////<......................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ..............................................;;;;;;;;;<........................ > │ > > ................................................................................ > │ > │ > │ > > .........................;;;;;;;;;;;;;;;;;;;;;/////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ................;;;;;;;;;//////////////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ................///////////////////////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ................>//////////////////////////////////////<<....................... > │ > > ................................................................................ > │ > │ > │ > > ................>//////////////////////////////////////<<....................... > │ > > ................................................................................ > │ > │ > │ > > ................>//////////////////////////////////////<<....................... > │ > > ..;;;;;;;;;;;;;;<<<............................................................. > │ > │ > │ > > ................>//////////////////////////////////////<<......................; > │ > > ;;//////////////<<<............................................................. > │ > │ > │ > > .................//////////////////////////////////////<<....................../ > │ > > ////////////////<<<....................;;;;<<................................... > │ > │ > │ > > .................//////////////////////////////////////<<....................../ > │ > > ////////////////<<<...............;;;;;////<<................................... > │ > │ > │ > > .................//////////////////////////////////////<<......................> > │ > > ////////////////<<<...............>////////<<................................... > │ > │ > │ > > .................>//////////////////////////////////////<......................> > │ > > ////////////////<<<................////////<<................................... > │ > │ > │ > > .................>//////////////////////////////////////<......................> > │ > > /////////////////<<<...............////////<<................................... > │ > │ > │ > > .................>//////////////////////////////////////<......................> > │ > > /////////////////<<<.............../////////.................................... > │ > │ > │ > > .................>//////////////////////////////////////<....................... > │ > > /////////////////<<<............................................................ > │ > │ > │ > > ..................//////////////////////////////////////<....................... > │ > > /////////////////<<............................................................. > │ > │ > │ > > ..................//////////////////////////////////////<<...................... > │ > > ................................................................................ > │ > │ > │ > > ..................//////////////////////////////////////<<...................... > │ > > ................................................................................ > │ > │ > │ > > ..................//////////////////////////////////////<<...................... > │ > > ................................................................................ > │ > │ > │ > > ..................>/////////////////////////////////////<<...................... > │ > > ................................................................................ > │ > │ > │ > > ..................>/////////////////////////////////////<....................... > │ > > ................................................................................ > │ > │ > │ > > ..................//////////////////////////////////////<....................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ......................................................<......................... > │ > > ................................................................................ > │ > │ > │ > > .........................................;;;;;;;;;;;;;<......................... > │ > > ................................................................................ > │ > │ > │ > > ...........................;;;;;;;;;;;;;;//////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ...............;;;;;;;;;;;;;///////////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ...............>///////////////////////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ................///////////////////////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ................///////////////////////////////////////<<....................... > │ > > ................................................................................ > │ > │ > │ > > ................>///////////////////////////////////////<....................... > │ > > ....;;;;;;;;;;;;<<.............................................................. > │ > │ > │ > > ................>///////////////////////////////////////<......................; > │ > > ;;;;////////////<<.............................................................. > │ > │ > │ > > .................///////////////////////////////////////<....................../ > │ > > ////////////////<<<....................;;;<<.................................... > │ > │ > │ > > .................///////////////////////////////////////<....................../ > │ > > /////////////////<<...............;;;;;////<<................................... > │ > │ > │ > > .................>//////////////////////////////////////<<.....................> > │ > > /////////////////<<...............>////////<<................................... > │ > │ > │ > > .................>///////////////////////////////////////<.....................> > │ > > /////////////////<<................////////<<................................... > │ > │ > │ > > ..................///////////////////////////////////////<...................... > │ > > /////////////////<<................////////<<................................... > │ > │ > │ > > ..................///////////////////////////////////////<...................... > │ > > /////////////////<<<...............>////////.................................... > │ > │ > │ > > ..................>//////////////////////////////////////<...................... > │ > > >/////////////////<<............................................................ > │ > │ > │ > > ..................>///////////////////////////////////////<..................... > │ > > >/////////////////<............................................................. > │ > │ > │ > > ...................///////////////////////////////////////<..................... > │ > > ................................................................................ > │ > │ > │ > > ...................///////////////////////////////////////<..................... > │ > > ................................................................................ > │ > │ > │ > > ...................>//////////////////////////////////////<..................... > │ > > ................................................................................ > │ > │ > │ > > ...................>//////////////////////////////////////<..................... > │ > > ................................................................................ > │ > │ > │ > > ...................>///////////////////////////////////////<.................... > │ > > ................................................................................ > │ > │ > │ > > ....................////////////////////////////................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .................................................;;;;;<......................... > │ > > ................................................................................ > │ > │ > │ > > .......................................;;;;;;;;;;/////<......................... > │ > > ................................................................................ > │ > │ > │ > > .............................;;;;;;;;;;///////////////<<........................ > │ > > ................................................................................ > │ > │ > │ > > ...................;;;;;;;;;;//////////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ...............;;;;////////////////////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ...............>///////////////////////////////////////<<....................... > │ > > ................................................................................ > │ > │ > │ > > ...............>////////////////////////////////////////<....................... > │ > > ................<............................................................... > │ > │ > │ > > ................////////////////////////////////////////<....................... > │ > > .....;;;;;;;;;;;<............................................................... > │ > │ > │ > > ................>///////////////////////////////////////<<....................;; > │ > > ;;;;;///////////<<.............................................................. > │ > │ > │ > > .................////////////////////////////////////////<...................../ > │ > > ////////////////<<.....................;;;<<.................................... > │ > │ > │ > > .................>///////////////////////////////////////<...................../ > │ > > /////////////////<................;;;;;////<.................................... > │ > │ > │ > > .................>///////////////////////////////////////<<....................> > │ > > /////////////////<<...............>////////<<................................... > │ > │ > │ > > ..................////////////////////////////////////////<..................... > │ > > /////////////////<<................////////<<................................... > │ > │ > │ > > ..................>///////////////////////////////////////<..................... > │ > > //////////////////<................>////////<................................... > │ > │ > │ > > ..................>///////////////////////////////////////<<.................... > │ > > >/////////////////<<................//////...................................... > │ > │ > │ > > ...................////////////////////////////////////////<.................... > │ > > .//////////////////<............................................................ > │ > │ > │ > > ...................>///////////////////////////////////////<.................... > │ > > .>///////////////............................................................... > │ > │ > │ > > ...................>///////////////////////////////////////<<................... > │ > > .///............................................................................ > │ > │ > │ > > ....................////////////////////////////////////////<................... > │ > > ................................................................................ > │ > │ > │ > > ....................>///////////////////////////////////////<................... > │ > > ................................................................................ > │ > │ > │ > > ....................>///////////////////////////////////////<<.................. > │ > > ................................................................................ > │ > │ > │ > > ...................../////////////////////////////////////...................... > │ > > ................................................................................ > │ > │ > │ > > .....................>/////////////////////..................................... > │ > > ................................................................................ > │ > │ > │ > > ......................///////................................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .....................................................<.......................... > │ > > ................................................................................ > │ > │ > │ > > ..............................................;;;;;;;<<......................... > │ > > ................................................................................ > │ > │ > │ > > .....................................;;;;;;;;;////////<......................... > │ > > ................................................................................ > │ > │ > │ > > .............................;;;;;;;;;////////////////<<........................ > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;//////////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ...............;;;;;;;/////////////////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > .............../////////////////////////////////////////<....................... > │ > > ................................................................................ > │ > │ > │ > > ...............>////////////////////////////////////////<....................... > │ > > .............;;;<............................................................... > │ > │ > │ > > ................/////////////////////////////////////////<...................... > │ > > .....;;;;;;;;///<............................................................... > │ > │ > │ > > ................>////////////////////////////////////////<....................;; > │ > > ;;;;;///////////<<.............................................................. > │ > │ > │ > > ................./////////////////////////////////////////<...................>/ > │ > > /////////////////<.....................;;;<<.................................... > │ > │ > │ > > .................>////////////////////////////////////////<..................../ > │ > > /////////////////<<...............;;;;;////<.................................... > │ > │ > │ > > ................../////////////////////////////////////////<...................> > │ > > //////////////////<...............>////////<<................................... > │ > │ > │ > > ..................>////////////////////////////////////////<.................... > │ > > //////////////////<................/////////<................................... > │ > │ > │ > > ..................>////////////////////////////////////////<<................... > │ > > >//////////////////<...............>////////<................................... > │ > │ > │ > > ...................>////////////////////////////////////////<................... > │ > > .//////////////////<................/////=...................................... > │ > │ > │ > > ...................>////////////////////////////////////////<<.................. > │ > > .>/////////////////<<........................................................... > │ > │ > │ > > ....................>////////////////////////////////////////<.................. > │ > > ../////////////................................................................. > │ > │ > │ > > ....................>////////////////////////////////////////<<................. > │ > > ..>///.......................................................................... > │ > │ > │ > > ...................../////////////////////////////////////////<................. > │ > > ................................................................................ > │ > │ > │ > > .....................>////////////////////////////////////////<................. > │ > > ................................................................................ > │ > │ > │ > > ......................///////////////////////////////////////................... > │ > > ................................................................................ > │ > │ > │ > > ......................>/////////////////////////////............................ > │ > > ................................................................................ > │ > │ > │ > > .......................////////////////////..................................... > │ > > ................................................................................ > │ > │ > │ > > .......................>//////////.............................................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ..................................................;;;<.......................... > │ > > ................................................................................ > │ > │ > │ > > ............................................;;;;;;///<.......................... > │ > > ................................................................................ > │ > │ > │ > > .....................................;;;;;;;/////////<<......................... > │ > > ................................................................................ > │ > │ > │ > > ..............................;;;;;;;/////////////////<<........................ > │ > > ................................................................................ > │ > │ > │ > > .......................;;;;;;;/////////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > .................;;;;;;;///////////////////////////////<<....................... > │ > > ................................................................................ > │ > │ > │ > > ..............;;;///////////////////////////////////////<....................... > │ > > ................................................................................ > │ > │ > │ > > ...............//////////////////////////////////////////<...................... > │ > > ............;;;<................................................................ > │ > │ > │ > > ...............>/////////////////////////////////////////<<..................... > │ > > .....;;;;;;;////<............................................................... > │ > │ > │ > > ................>/////////////////////////////////////////<....................; > │ > > ;;;;;///////////<<.............................................................. > │ > │ > │ > > ................./////////////////////////////////////////<<..................;/ > │ > > /////////////////<.....................;;;<<.................................... > │ > │ > │ > > .................>/////////////////////////////////////////<.................../ > │ > > /////////////////<<...............;;;;;////<.................................... > │ > │ > │ > > ..................//////////////////////////////////////////<................... > │ > > //////////////////<<..............>////////<<................................... > │ > │ > │ > > ..................>/////////////////////////////////////////<<.................. > │ > > >//////////////////<...............>////////<................................... > │ > │ > │ > > ...................>/////////////////////////////////////////<.................. > │ > > .//////////////////<<...............////////<<.................................. > │ > │ > │ > > ..................../////////////////////////////////////////<<................. > │ > > .>//////////////////<...............>////....................................... > │ > │ > │ > > ....................>/////////////////////////////////////////<................. > │ > > ..///////////////////........................................................... > │ > │ > │ > > ...................../////////////////////////////////////////<<................ > │ > > ..>////////////................................................................. > │ > │ > │ > > .....................>/////////////////////////////////////////<................ > │ > > ...>////........................................................................ > │ > │ > │ > > ......................>/////////////////////////////////////////<............... > │ > > ................................................................................ > │ > │ > │ > > ......................./////////////////////////////////////////................ > │ > > ................................................................................ > │ > │ > │ > > .......................>/////////////////////////////////....................... > │ > > ................................................................................ > │ > │ > │ > > ........................//////////////////////////.............................. > │ > > ................................................................................ > │ > │ > │ > > ........................>//////////////////..................................... > │ > > ................................................................................ > │ > │ > │ > > .........................>//////////............................................ > │ > > ................................................................................ > │ > │ > │ > > ..........................////.................................................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................;;;/;........................... > │ > > ................................................................................ > │ > │ > │ > > ..........................................;;;;/;//////.......................... > │ > > ................................................................................ > │ > │ > │ > > ....................................;;;;///////////////......................... > │ > > ................................................................................ > │ > │ > │ > > ...............................;;/;;///////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > .........................;;;;/;/////////////////////////........................ > │ > > ................................................................................ > │ > │ > │ > > ...................;;;;//;///////////////////////////////....................... > │ > > ................................................................................ > │ > │ > │ > > ..............;;/;;//////////////////////////////////////<...................... > │ > > ................................................................................ > │ > │ > │ > > ..............>>//////////////////////////////////////////...................... > │ > > ...........;;;//................................................................ > │ > │ > │ > > ...............>>//////////////////////////////////////////..................... > │ > > ......;;/////////............................................................... > │ > │ > │ > > ................>///////////////////////////////////////////.................... > │ > > ;;;///////////////.............................................................. > │ > │ > │ > > .................>//////////////////////////////////////////<.................;> > │ > > //////////////////<...................;;///<.................................... > │ > │ > │ > > .................>>//////////////////////////////////////////..................> > │ > > ///////////////////...............;;;;//////.................................... > │ > │ > │ > > ..................>>//////////////////////////////////////////.................. > │ > > >///////////////////...............>/////////................................... > │ > │ > │ > > ...................>//////////////////////////////////////////<................. > │ > > >>///////////////////..............>>////////<.................................. > │ > │ > │ > > ....................>//////////////////////////////////////////................. > │ > > .>>//////////////////...............>>////////.................................. > │ > │ > │ > > ....................>>//////////////////////////////////////////................ > │ > > ..>///////////////////...............>///....................................... > │ > │ > │ > > .....................>///////////////////////////////////////////............... > │ > > ...>////////////////............................................................ > │ > │ > │ > > ......................>//////////////////////////////////////////<.............. > │ > > ...>>/////////.................................................................. > │ > │ > │ > > ......................>>//////////////////////////////////////////.............. > │ > > ....>////....................................................................... > │ > │ > │ > > .......................>>/////////////////////////////////////////.............. > │ > > ................................................................................ > │ > │ > │ > > ........................>>//////////////////////////////////.................... > │ > > ................................................................................ > │ > │ > │ > > .........................>////////////////////////////.......................... > │ > > ................................................................................ > │ > │ > │ > > .........................>>//////////////////////............................... > │ > > ................................................................................ > │ > │ > │ > > ..........................>>////////////////.................................... > │ > > ................................................................................ > │ > │ > │ > > ...........................>///////////......................................... > │ > > ................................................................................ > │ > │ > │ > > ............................>////............................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ...................................................;............................ > │ > > ................................................................................ > │ > │ > │ > > ..............................................;/;;///........................... > │ > > ................................................................................ > │ > │ > │ > > .........................................;;;//////////.......................... > │ > > ................................................................................ > │ > │ > │ > > ....................................;;;///////////////<......................... > │ > > ................................................................................ > │ > │ > │ > > ...............................;;;/;///////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ..........................;;;/;/////////////////////////<....................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;/////////////////////////////////....................... > │ > > ................................................................................ > │ > │ > │ > > .................;;;//////////////////////////////////////...................... > │ > > ................................................................................ > │ > │ > │ > > ..............;>///////////////////////////////////////////..................... > │ > > ...........;;;;/................................................................ > │ > │ > │ > > ...............>///////////////////////////////////////////<.................... > │ > > ......;;/////////............................................................... > │ > │ > │ > > ................>///////////////////////////////////////////<................... > │ > > .;;;//////////////.............................................................. > │ > │ > │ > > .................>///////////////////////////////////////////<................;> > │ > > ///////////////////...................;;///<.................................... > │ > │ > │ > > .................>>///////////////////////////////////////////.................> > │ > > >///////////////////..............;;;;//////.................................... > │ > │ > │ > > ..................>>///////////////////////////////////////////................. > │ > > >///////////////////<.............>>/////////................................... > │ > │ > │ > > ...................>>///////////////////////////////////////////................ > │ > > .>///////////////////<.............>>/////////.................................. > │ > │ > │ > > ....................>>///////////////////////////////////////////............... > │ > > .>>///////////////////..............>>////////.................................. > │ > │ > │ > > .....................>///////////////////////////////////////////<.............. > │ > > ..>>///////////////////..............>////...................................... > │ > │ > │ > > ......................>///////////////////////////////////////////<............. > │ > > ...>>//////////////............................................................. > │ > │ > │ > > .......................>///////////////////////////////////////////............. > │ > > ....>>////////.................................................................. > │ > │ > │ > > ........................>//////////////////////////////////////////............. > │ > > .....>////...................................................................... > │ > │ > │ > > ........................>>/////////////////////////////////////................. > │ > > ................................................................................ > │ > │ > │ > > .........................>>///////////////////////////////...................... > │ > > ................................................................................ > │ > │ > │ > > ..........................>>//////////////////////////.......................... > │ > > ................................................................................ > │ > │ > │ > > ...........................>>////////////////////............................... > │ > > ................................................................................ > │ > │ > │ > > ............................>>///////////////................................... > │ > > ................................................................................ > │ > │ > │ > > .............................>>/////////........................................ > │ > > ................................................................................ > │ > │ > │ > > ..............................>/////............................................ > │ > > ................................................................................ > │ > │ > │ > > .............................../................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................;;/<............................ > │ > > ................................................................................ > │ > │ > │ > > ............................................;;//////<........................... > │ > > ................................................................................ > │ > │ > │ > > ........................................;;;//////////<.......................... > │ > > ................................................................................ > │ > │ > │ > > ....................................;/;;//////////////<......................... > │ > > ................................................................................ > │ > │ > │ > > ................................;;/////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ...........................;;//;////////////////////////........................ > │ > > ................................................................................ > │ > │ > │ > > .......................;;;///////////////////////////////<...................... > │ > > ................................................................................ > │ > │ > │ > > ...................;/;////////////////////////////////////<..................... > │ > > ..............;................................................................. > │ > │ > │ > > ..............;;;;/////////////////////////////////////////<.................... > │ > > ..........;/////................................................................ > │ > │ > │ > > ..............;>////////////////////////////////////////////<................... > │ > > ......;;;;///////............................................................... > │ > │ > │ > > ................>////////////////////////////////////////////<.................. > │ > > ..;///////////////.............................................................. > │ > │ > │ > > .................>////////////////////////////////////////////.................; > │ > > ;//////////////////...................;;;//<.................................... > │ > │ > │ > > ..................>////////////////////////////////////////////................> > │ > > >///////////////////..............;;;///////<................................... > │ > │ > │ > > ...................>////////////////////////////////////////////<..............> > │ > > >>///////////////////.............>>/////////<.................................. > │ > │ > │ > > ....................>////////////////////////////////////////////<.............. > │ > > >>>///////////////////.............>>/////////.................................. > │ > │ > │ > > .....................>////////////////////////////////////////////<............. > │ > > .>>>///////////////////.............>>////////.................................. > │ > │ > │ > > ......................>////////////////////////////////////////////<............ > │ > > ..>>>/////////////////...............>>///...................................... > │ > │ > │ > > .......................>////////////////////////////////////////////............ > │ > > ...>>>////////////.............................................................. > │ > │ > │ > > ........................>///////////////////////////////////////////............ > │ > > ....>>>///////.................................................................. > │ > │ > │ > > .........................>>/////////////////////////////////////................ > │ > > .....>>////..................................................................... > │ > │ > │ > > ..........................>/////////////////////////////////.................... > │ > > ................................................................................ > │ > │ > │ > > ...........................>>////////////////////////////....................... > │ > > ................................................................................ > │ > │ > │ > > ............................>>///////////////////////........................... > │ > > ................................................................................ > │ > │ > │ > > .............................>////////////////////.............................. > │ > > ................................................................................ > │ > │ > │ > > ..............................>>//////////////.................................. > │ > > ................................................................................ > │ > │ > │ > > ...............................>>/////////...................................... > │ > > ................................................................................ > │ > │ > │ > > ................................>>////.......................................... > │ > > ................................................................................ > │ > │ > │ > > .................................>/............................................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ...............................................;;;/............................. > │ > > ................................................................................ > │ > │ > │ > > ...........................................;;;//////............................ > │ > > ................................................................................ > │ > │ > │ > > .......................................;;;///////////........................... > │ > > ................................................................................ > │ > │ > │ > > ....................................;;////////////////.......................... > │ > > ................................................................................ > │ > │ > │ > > ................................;;;////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ............................;;/;////////////////////////<....................... > │ > > ................................................................................ > │ > │ > │ > > .........................;;//////////////////////////////<...................... > │ > > ................................................................................ > │ > │ > │ > > .....................;/////////////////////////////////////..................... > │ > > .............;;................................................................. > │ > │ > │ > > .................;/;////////////////////////////////////////.................... > │ > > ..........;;////................................................................ > │ > │ > │ > > ...............;/////////////////////////////////////////////................... > │ > > ......;;;////////............................................................... > │ > │ > │ > > ...............>>/////////////////////////////////////////////.................. > │ > > ...;//////////////<............................................................. > │ > │ > │ > > ................>>/////////////////////////////////////////////................; > │ > > ;///////////////////..................;;;//<.................................... > │ > │ > │ > > ..................>>////////////////////////////////////////////<.............;; > │ > > >////////////////////..............;/////////................................... > │ > │ > │ > > ...................>>////////////////////////////////////////////<............\> > │ > > >>////////////////////............;>//////////.................................. > │ > │ > │ > > ....................>>////////////////////////////////////////////<............. > │ > > >>>////////////////////...........\>>//////////................................. > │ > │ > │ > > .....................>>/////////////////////////////////////////////............ > │ > > .>>>////////////////////............>>>//////................................... > │ > │ > │ > > .......................>/////////////////////////////////////////////........... > │ > > ..>>>////////////////................>>///...................................... > │ > │ > │ > > ........................>////////////////////////////////////////////........... > │ > > ...>>>////////////.............................................................. > │ > │ > │ > > .........................>>///////////////////////////////////////.............. > │ > > ....>>>>///////................................................................. > │ > │ > │ > > ..........................>>///////////////////////////////////................. > │ > > .....\>>>///.................................................................... > │ > │ > │ > > ...........................>>//////////////////////////////..................... > │ > > ................................................................................ > │ > │ > │ > > ............................>>//////////////////////////........................ > │ > > ................................................................................ > │ > │ > │ > > .............................>>//////////////////////........................... > │ > > ................................................................................ > │ > │ > │ > > ...............................>//////////////////.............................. > │ > > ................................................................................ > │ > │ > │ > > ................................>>/////////////................................. > │ > > ................................................................................ > │ > │ > │ > > .................................>>/////////.................................... > │ > > ................................................................................ > │ > │ > │ > > ..................................>>/////....................................... > │ > > ................................................................................ > │ > │ > │ > > ...................................>//.......................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .............................................;;///.............................. > │ > > ................................................................................ > │ > │ > │ > > ..........................................;;;//////<............................ > │ > > ................................................................................ > │ > │ > │ > > .......................................;////////////<........................... > │ > > ................................................................................ > │ > │ > │ > > ....................................;/////////////////.......................... > │ > > ................................................................................ > │ > │ > │ > > ................................;;;////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > .............................;;;////////////////////////<....................... > │ > > ................................................................................ > │ > │ > │ > > ..........................;///////////////////////////////...................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;///////////////////////////////////..................... > │ > > .............;/................................................................. > │ > │ > │ > > ...................;;;//////////////////////////////////////<................... > │ > > ..........;;////................................................................ > │ > │ > │ > > ................;;////////////////////////////////////////////.................. > │ > > ......;;;////////............................................................... > │ > │ > │ > > ...............;>//////////////////////////////////////////////................. > │ > > ...;;//////////////......................<...................................... > │ > │ > │ > > ................>>//////////////////////////////////////////////................ > │ > > ;///////////////////..................;;;//<.................................... > │ > │ > │ > > .................>>>//////////////////////////////////////////////............;; > │ > > >////////////////////..............;;;///////................................... > │ > │ > │ > > ..................>>>//////////////////////////////////////////////...........>> > │ > > >>////////////////////<..........;;;>/////////.................................. > │ > │ > │ > > ...................>>>//////////////////////////////////////////////...........> > │ > > >>>/////////////////////..........>>>>/////////................................. > │ > │ > │ > > .....................>>>/////////////////////////////////////////////<.......... > │ > > >>>>>//////////////////............>>>>//////................................... > │ > │ > │ > > ......................>>>////////////////////////////////////////////........... > │ > > .\>>>>///////////////................>>>//...................................... > │ > │ > │ > > ........................>>>////////////////////////////////////////............. > │ > > ...>>>>///////////.............................................................. > │ > │ > │ > > .........................>>>////////////////////////////////////................ > │ > > ....>>>>>//////................................................................. > │ > │ > │ > > ..........................>>>////////////////////////////////................... > │ > > ......>>>>//.................................................................... > │ > │ > │ > > ............................>>>////////////////////////////..................... > │ > > ................................................................................ > │ > │ > │ > > .............................>>>////////////////////////........................ > │ > > ................................................................................ > │ > │ > │ > > ..............................>>>////////////////////........................... > │ > > ................................................................................ > │ > │ > │ > > ................................>>>////////////////............................. > │ > > ................................................................................ > │ > │ > │ > > .................................>>>////////////................................ > │ > > ................................................................................ > │ > │ > │ > > ...................................>>>////////.................................. > │ > > ................................................................................ > │ > │ > │ > > ....................................>>>////..................................... > │ > > ................................................................................ > │ > │ > │ > > ......................................>//....................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ...............................................;<............................... > │ > > ................................................................................ > │ > │ > │ > > ............................................;;;//<.............................. > │ > > ................................................................................ > │ > │ > │ > > ..........................................;;///////<............................ > │ > > ................................................................................ > │ > │ > │ > > .......................................;////////////<........................... > │ > > ................................................................................ > │ > │ > │ > > ....................................;/////////////////.......................... > │ > > ................................................................................ > │ > │ > │ > > .................................;/////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ..............................;;/////////////////////////....................... > │ > > ................................................................................ > │ > │ > │ > > ...........................;;/////////////////////////////...................... > │ > > ................................................................................ > │ > │ > │ > > ........................;;//////////////////////////////////.................... > │ > > ............;;<................................................................. > │ > │ > │ > > .....................;;//////////////////////////////////////................... > │ > > .........;//////................................................................ > │ > │ > │ > > ..................;///////////////////////////////////////////<................. > │ > > .......;//////////.............................................................. > │ > │ > │ > > ................;///////////////////////////////////////////////................ > │ > > ....;;/////////////......................;...................................... > │ > │ > │ > > ................>>>//////////////////////////////////////////////<.............. > │ > > .;;/////////////////<.................;;///<.................................... > │ > │ > │ > > ................>>>>///////////////////////////////////////////////............; > │ > > >/////////////////////.............;;////////................................... > │ > │ > │ > > ................;>>>>>//////////////////////////////////////////////<........;;> > │ > > >>/////////////////////<.........;;;>/////////<................................. > │ > │ > │ > > ..................>>>>>//////////////////////////////////////////////<........>> > │ > > >>>>////////////////////..........>>>>/////////................................. > │ > │ > │ > > ...................>>>>>//////////////////////////////////////////////.......... > │ > > >>>>>//////////////////............>>>>>/////................................... > │ > │ > │ > > .....................>>>>>//////////////////////////////////////////............ > │ > > .>>>>>>/////////////.................>>>>/...................................... > │ > │ > │ > > ......................>>>>>>/////////////////////////////////////............... > │ > > ...>>>>>//////////.............................................................. > │ > │ > │ > > ........................>>>>>//////////////////////////////////................. > │ > > ....>>>>>>/////................................................................. > │ > │ > │ > > ..........................>>>>>//////////////////////////////................... > │ > > ......>>>>>//................................................................... > │ > │ > │ > > ...........................>>>>>///////////////////////////..................... > │ > > ................................................................................ > │ > │ > │ > > .............................>>>>>///////////////////////....................... > │ > > ................................................................................ > │ > │ > │ > > ..............................>>>>>///////////////////.......................... > │ > > ................................................................................ > │ > │ > │ > > ................................>>>>>///////////////............................ > │ > > ................................................................................ > │ > │ > │ > > .................................>>>>>>///////////.............................. > │ > > ................................................................................ > │ > │ > │ > > ...................................=>>>>///////................................. > │ > > ................................................................................ > │ > │ > │ > > ......................................>>>>///................................... > │ > > ................................................................................ > │ > │ > │ > > ........................................=>/..................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ..............................................;/................................ > │ > > ................................................................................ > │ > │ > │ > > ............................................;////............................... > │ > > ................................................................................ > │ > │ > │ > > .........................................;;///////<............................. > │ > > ................................................................................ > │ > │ > │ > > ......................................;;////////////............................ > │ > > ................................................................................ > │ > │ > │ > > ....................................;;///////////////<.......................... > │ > > ................................................................................ > │ > │ > │ > > .................................;/////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ..............................;;;////////////////////////....................... > │ > > ................................................................................ > │ > │ > │ > > ............................;/////////////////////////////<..................... > │ > > ................................................................................ > │ > │ > │ > > .........................;;/////////////////////////////////.................... > │ > > ...........;;/.................................................................. > │ > │ > │ > > .......................;;/////////////////////////////////////.................. > │ > > .........;;/////................................................................ > │ > │ > │ > > ....................;;/////////////////////////////////////////................. > │ > > .......;//////////.............................................................. > │ > │ > │ > > ..................;;/////////////////////////////////////////////............... > │ > > ....;;/////////////......................;...................................... > │ > │ > │ > > ................;;>///////////////////////////////////////////////<............. > │ > > ..;;/////////////////.................;;///<.................................... > │ > │ > │ > > ................;>>>////////////////////////////////////////////////...........; > │ > > ;/////////////////////.............\;////////<.................................. > │ > │ > │ > > ................>>>>>>///////////////////////////////////////////////<.......;;; > │ > > >>>/////////////////////.........;;;>//////////................................. > │ > │ > │ > > ................>>>>>>>>//////////////////////////////////////////////.......>>> > │ > > >>>>////////////////////.........>>>>>>////////................................. > │ > │ > │ > > ..................>>>>>>>>//////////////////////////////////////////...........> > │ > > >>>>>>////////////////.............>>>>>/////................................... > │ > │ > │ > > ...................\>>>>>>>///////////////////////////////////////.............. > │ > > .>>>>>>>////////////.................>>>>//..................................... > │ > │ > │ > > .....................>>>>>>>>///////////////////////////////////................ > │ > > ..>>>>>>>/////////.............................................................. > │ > │ > │ > > .......................>>>>>>>>///////////////////////////////.................. > │ > > ....>>>>>>>/////................................................................ > │ > │ > │ > > .........................>>>>>>>/////////////////////////////................... > │ > > ......>>>>>>//.................................................................. > │ > │ > │ > > ..........................>>>>>>>>/////////////////////////..................... > │ > > ................................................................................ > │ > │ > │ > > ............................>>>>>>>>/////////////////////....................... > │ > > ................................................................................ > │ > │ > │ > > ..............................>>>>>>>>/////////////////......................... > │ > > ................................................................................ > │ > │ > │ > > ................................>>>>>>>//////////////........................... > │ > > ................................................................................ > │ > │ > │ > > .................................>>>>>>>>//////////............................. > │ > > ................................................................................ > │ > │ > │ > > ....................................>>>>>>>//////............................... > │ > > ................................................................................ > │ > │ > │ > > ........................................>>>>///................................. > │ > > ................................................................................ > │ > │ > │ > > ...........................................>>/.................................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .............................................;/................................. > │ > > ................................................................................ > │ > │ > │ > > ...........................................;;////............................... > │ > > ................................................................................ > │ > │ > │ > > ........................................;;////////<............................. > │ > > ................................................................................ > │ > │ > │ > > ......................................;/////////////............................ > │ > > ................................................................................ > │ > │ > │ > > ....................................;/////////////////.......................... > │ > > ................................................................................ > │ > │ > │ > > .................................;;////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ...............................;/////////////////////////....................... > │ > > ................................................................................ > │ > │ > │ > > .............................;/////////////////////////////..................... > │ > > ................................................................................ > │ > │ > │ > > ..........................;;////////////////////////////////<................... > │ > > ...........;;/.................................................................. > │ > │ > │ > > ........................;;////////////////////////////////////.................. > │ > > ........;;//////................................................................ > │ > │ > │ > > ......................;/////////////////////////////////////////................ > │ > > ......;;//////////.............................................................. > │ > │ > │ > > ...................;;////////////////////////////////////////////<.............. > │ > > ....;;;////////////<....................;;...................................... > │ > │ > │ > > .................;;////////////////////////////////////////////////<............ > │ > > ..;;/////////////////................;;;////.................................... > │ > │ > │ > > ................;;>>>////////////////////////////////////////////////........... > │ > > ;;/////////////////////............\;;///////<.................................. > │ > │ > │ > > ................;>>>>>>///////////////////////////////////////////////.......;;; > │ > > ;>>/////////////////////.........;;;>//////////................................. > │ > │ > │ > > ...............;>>>>>>>>/////////////////////////////////////////////........;>> > │ > > >>>>>///////////////////.........;>>>>>////////................................. > │ > │ > │ > > ................>>>>>>>>>>/////////////////////////////////////////...........>> > │ > > >>>>>>>///////////////.............>>>>>>////................................... > │ > │ > │ > > ..................>>>>>>>>>>>////////////////////////////////////............... > │ > > >>>>>>>>>///////////................\>>>>>/..................................... > │ > │ > │ > > ....................>>>>>>>>>>//////////////////////////////////................ > │ > > ..>>>>>>>>////////.............................................................. > │ > │ > │ > > ......................>>>>>>>>>>//////////////////////////////.................. > │ > > ....>>>>>>>>////................................................................ > │ > │ > │ > > ........................>>>>>>>>>>///////////////////////////................... > │ > > ......>>>>>>>//................................................................. > │ > │ > │ > > ..........................>>>>>>>>>>///////////////////////..................... > │ > > ................................................................................ > │ > │ > │ > > ............................>>>>>>>>>>///////////////////....................... > │ > > ................................................................................ > │ > │ > │ > > ..............................>>>>>>>>>>////////////////........................ > │ > > ................................................................................ > │ > │ > │ > > ................................>>>>>>>>>>////////////.......................... > │ > > ................................................................................ > │ > │ > │ > > ..................................>>>>>>>>>>////////............................ > │ > > ................................................................................ > │ > │ > │ > > ....................................=>>>>>>>>>/////............................. > │ > > ................................................................................ > │ > │ > │ > > ..........................................>>>>>//............................... > │ > > ................................................................................ > │ > │ > │ > > .............................................../................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ............................................;;.................................. > │ > > ................................................................................ > │ > │ > │ > > ..........................................;;////................................ > │ > > ................................................................................ > │ > │ > │ > > ........................................;;////////.............................. > │ > > ................................................................................ > │ > │ > │ > > ......................................;////////////<............................ > │ > > ................................................................................ > │ > │ > │ > > ....................................;////////////////<.......................... > │ > > ................................................................................ > │ > │ > │ > > ..................................;////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ................................;////////////////////////<...................... > │ > > ................................................................................ > │ > │ > │ > > ..............................;////////////////////////////..................... > │ > > ................................................................................ > │ > │ > │ > > ............................;////////////////////////////////................... > │ > > ..........;;//.................................................................. > │ > │ > │ > > ..........................;////////////////////////////////////................. > │ > > ........;;//////................................................................ > │ > │ > │ > > ........................;///////////////////////////////////////<............... > │ > > .....;;;//////////.............................................................. > │ > │ > │ > > ......................;///////////////////////////////////////////<............. > │ > > ...\;;//////////////....................;<...................................... > │ > │ > │ > > ....................;;//////////////////////////////////////////////<........... > │ > > ..;;;/////////////////...............;;;///<.................................... > │ > │ > │ > > ..................;;>////////////////////////////////////////////////........... > │ > > ;;;/////////////////////...........;;;///////<.................................. > │ > │ > │ > > ................;;>>>>>//////////////////////////////////////////////.........;; > │ > > ;;>/////////////////////..........;;;//////////................................. > │ > │ > │ > > ...............;;>>>>>>>>//////////////////////////////////////////.........\;;> > │ > > >>>>>//////////////////..........;;>>>>////////................................. > │ > │ > │ > > ..............;>>>>>>>>>>>>///////////////////////////////////////...........>>> > │ > > >>>>>>>///////////////.............>>>>>>////................................... > │ > │ > │ > > ................>>>>>>>>>>>>>////////////////////////////////////............... > │ > > >>>>>>>>>>//////////.................>>>>>/..................................... > │ > │ > │ > > ..................>>>>>>>>>>>>>>///////////////////////////////................. > │ > > .\>>>>>>>>>////////...................=......................................... > │ > │ > │ > > ....................\>>>>>>>>>>>>>////////////////////////////.................. > │ > > ....>>>>>>>>>////............................................................... > │ > │ > │ > > .......................>>>>>>>>>>>>>/////////////////////////................... > │ > > ......>>>>>>>>>/................................................................ > │ > │ > │ > > .........................>>>>>>>>>>>>>/////////////////////..................... > │ > > ................................................................................ > │ > │ > │ > > ...........................>>>>>>>>>>>>>//////////////////...................... > │ > > ................................................................................ > │ > │ > │ > > .............................>>>>>>>>>>>>>///////////////....................... > │ > > ................................................................................ > │ > │ > │ > > ...............................>>>>>>>>>>>>>>//////////......................... > │ > > ................................................................................ > │ > │ > │ > > ..................................>>>>>>>>>>>>>///////.......................... > │ > > ................................................................................ > │ > │ > │ > > ....................................=>>>>>>>>>>>>////........................... > │ > > ................................................................................ > │ > │ > │ > > ............................................=>>>>>/............................. > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ...........................................;/<.................................. > │ > > ................................................................................ > │ > │ > │ > > .........................................;;////<................................ > │ > > ................................................................................ > │ > │ > │ > > .......................................;;////////<.............................. > │ > > ................................................................................ > │ > │ > │ > > .....................................;;////////////<............................ > │ > > ................................................................................ > │ > │ > │ > > ...................................;;;///////////////<.......................... > │ > > ................................................................................ > │ > │ > │ > > .................................;;////////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ................................;;///////////////////////<...................... > │ > > ................................................................................ > │ > │ > │ > > ..............................;;///////////////////////////<.................... > │ > > ................................................................................ > │ > │ > │ > > ............................;;///////////////////////////////<.................. > │ > > ..........;;//.................................................................. > │ > │ > │ > > ..........................;;;//////////////////////////////////................. > │ > > .......;;;//////................................................................ > │ > │ > │ > > .........................;;//////////////////////////////////////............... > │ > > .....;;;//////////.............................................................. > │ > │ > │ > > .......................;;//////////////////////////////////////////<............ > │ > > ...;;;;/////////////....................;/...................................... > │ > │ > │ > > .....................;;//////////////////////////////////////////////........... > │ > > .;;;;/////////////////...............;;;////.................................... > │ > │ > │ > > ...................;;;///////////////////////////////////////////////........... > │ > > ;;;;////////////////////...........;;;////////.................................. > │ > │ > │ > > ..................;;>>>>////////////////////////////////////////////..........;; > │ > > ;;;>////////////////////..........;;;//////////................................. > │ > │ > │ > > ................;;>>>>>>>>////////////////////////////////////////...........;;; > │ > > >>>>>>/////////////////..........;;>>>>///////.................................. > │ > │ > │ > > ..............;;>>>>>>>>>>>>/////////////////////////////////////...........;>>> > │ > > >>>>>>>>/////////////.............>>>>>>>>///................................... > │ > │ > │ > > ..............>>>>>>>>>>>>>>>>>/////////////////////////////////...............> > │ > > >>>>>>>>>>//////////................\>>>>>>/.................................... > │ > │ > │ > > ................\>>>>>>>>>>>>>>>>//////////////////////////////................. > │ > > .>>>>>>>>>>>///////....................=........................................ > │ > │ > │ > > ...................>>>>>>>>>>>>>>>>///////////////////////////.................. > │ > > ...>>>>>>>>>>>>///.............................................................. > │ > │ > │ > > .....................\>>>>>>>>>>>>>>>>///////////////////////................... > │ > > ......>>>>>>>>>>................................................................ > │ > │ > │ > > ........................>>>>>>>>>>>>>>>>////////////////////.................... > │ > > ................................................................................ > │ > │ > │ > > ..........................>>>>>>>>>>>>>>>>/////////////////..................... > │ > > ................................................................................ > │ > │ > │ > > .............................>>>>>>>>>>>>>>>>/////////////...................... > │ > > ................................................................................ > │ > │ > │ > > ...............................>>>>>>>>>>>>>>>>/////////........................ > │ > > ................................................................................ > │ > │ > │ > > ..................................>>>>>>>>>>>>>>>>/////......................... > │ > > ................................................................................ > │ > │ > │ > > ....................................=>>>>>>>>>>>>>>>//.......................... > │ > > ................................................................................ > │ > │ > │ > > .................................................>>>>........................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ..........................................;//................................... > │ > > ................................................................................ > │ > │ > │ > > ........................................;;/////................................. > │ > > ................................................................................ > │ > │ > │ > > ......................................;;/////////............................... > │ > > ................................................................................ > │ > │ > │ > > ....................................;;;////////////............................. > │ > > ................................................................................ > │ > │ > │ > > ..................................;;;////////////////........................... > │ > > ................................................................................ > │ > │ > │ > > ................................;;;;///////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > ..............................;;;;///////////////////////<...................... > │ > > ................................................................................ > │ > │ > │ > > .............................;;;;//////////////////////////<.................... > │ > > ................................................................................ > │ > │ > │ > > ...........................;;;;///////////////////////////////.................. > │ > > .........;;;//.................................................................. > │ > │ > │ > > ..........................;;;;//////////////////////////////////................ > │ > > ......;;;;//////................................................................ > │ > │ > │ > > ........................;;;;//////////////////////////////////////.............. > │ > > ....;;;;;/////////.............................................................. > │ > │ > │ > > ......................;;;;;/////////////////////////////////////////............ > │ > > ...;;;;/////////////<..................<;<...................................... > │ > │ > │ > > .....................;;;;///////////////////////////////////////////............ > │ > > .;;;;;/////////////////..............;;;////.................................... > │ > │ > │ > > ...................;;;;;////////////////////////////////////////////............ > │ > > ;;;;////////////////////...........;;;;///////.................................. > │ > │ > │ > > ..................;;;;;>///////////////////////////////////////////...........;; > │ > > ;;;>////////////////////..........;;;//////////................................. > │ > │ > │ > > ................;;;;;>>>>>////////////////////////////////////////...........;;; > │ > > ;;>>>>/////////////////..........;;;>>>>//////.................................. > │ > │ > │ > > ...............;;;>>>>>>>>>>>////////////////////////////////////...........;;>> > │ > > >>>>>>>>>/////////////............>>>>>>>>///................................... > │ > │ > │ > > .............;;;>>>>>>>>>>>>>>>>////////////////////////////////..............>> > │ > > >>>>>>>>>>>/////////................>>>>>>>/.................................... > │ > │ > │ > > ..............\>>>>>>>>>>>>>>>>>>>/////////////////////////////................. > │ > > .>>>>>>>>>>>>>/////....................>........................................ > │ > │ > │ > > .................>>>>>>>>>>>>>>>>>>>>/////////////////////////.................. > │ > > ...>>>>>>>>>>>>>//.............................................................. > │ > │ > │ > > ....................>>>>>>>>>>>>>>>>>>>>/////////////////////................... > │ > > ......>>>>>>>>>>>............................................................... > │ > │ > │ > > .......................>>>>>>>>>>>>>>>>>>>//////////////////.................... > │ > > ................................................................................ > │ > │ > │ > > ..........................>>>>>>>>>>>>>>>>>>>//////////////..................... > │ > > ................................................................................ > │ > │ > │ > > ............................>>>>>>>>>>>>>>>>>>>>///////////..................... > │ > > ................................................................................ > │ > │ > │ > > ...............................>>>>>>>>>>>>>>>>>>>////////...................... > │ > > ................................................................................ > │ > │ > │ > > ..................................>>>>>>>>>>>>>>>>>>>////....................... > │ > > ................................................................................ > │ > │ > │ > > .....................................>>>>>>>>>>>>>>>>>>/........................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .........................................;;/.................................... > │ > > ................................................................................ > │ > │ > │ > > .......................................;;/////<................................. > │ > > ................................................................................ > │ > │ > │ > > .....................................;;;/////////............................... > │ > > ................................................................................ > │ > │ > │ > > ...................................;;;;////////////............................. > │ > > ................................................................................ > │ > │ > │ > > .................................;;;;;///////////////........................... > │ > > ................................................................................ > │ > │ > │ > > ...............................;;;;;///////////////////<........................ > │ > > ................................................................................ > │ > │ > │ > > .............................;;;;;;//////////////////////<...................... > │ > > ................................................................................ > │ > │ > │ > > ...........................;;;;;;;//////////////////////////.................... > │ > > ................................................................................ > │ > │ > │ > > ..........................;;;;;;//////////////////////////////.................. > │ > > .........;;//<.................................................................. > │ > │ > │ > > .........................;;;;;;/////////////////////////////////................ > │ > > ......;;;;//////................................................................ > │ > │ > │ > > .......................;;;;;;;////////////////////////////////////<............. > │ > > ...;;;;;;/////////<............................................................. > │ > │ > │ > > ......................;;;;;;;///////////////////////////////////////............ > │ > > ..;;;;;//////////////..................;;....................................... > │ > │ > │ > > .....................;;;;;;////////////////////////////////////////............. > │ > > .;;;;;;////////////////.............;;;;////.................................... > │ > │ > │ > > ...................;;;;;;;////////////////////////////////////////.............. > │ > > ;;;;;;//////////////////...........;;;;///////<................................. > │ > │ > │ > > ..................;;;;;;;/////////////////////////////////////////............\; > │ > > ;;;;///////////////////...........;;;;/////////................................. > │ > │ > │ > > .................;;;;;;;>>>//////////////////////////////////////............;;; > │ > > ;;;>>>>///////////////...........;;;;>>>//////.................................. > │ > │ > │ > > ...............;;;;;;>>>>>>>>>>/////////////////////////////////............;;;> > │ > > >>>>>>>>>////////////............\>>>>>>>>>//................................... > │ > │ > │ > > ..............;;;;>>>>>>>>>>>>>>>///////////////////////////////.............>>> > │ > > >>>>>>>>>>>>/////////...............>>>>>>>>.................................... > │ > │ > │ > > .............;;>>>>>>>>>>>>>>>>>>>>>///////////////////////////................. > │ > > >>>>>>>>>>>>>>>/////...................>........................................ > │ > │ > │ > > ...............>>>>>>>>>>>>>>>>>>>>>>>>///////////////////////.................. > │ > > ...>>>>>>>>>>>>>>>/............................................................. > │ > │ > │ > > ..................>>>>>>>>>>>>>>>>>>>>>>>>////////////////////.................. > │ > > ......>>>>>>>>>>>/.............................................................. > │ > │ > │ > > .....................>>>>>>>>>>>>>>>>>>>>>>>>////////////////................... > │ > > ................................................................................ > │ > │ > │ > > ........................>>>>>>>>>>>>>>>>>>>>>>>>////////////.................... > │ > > ................................................................................ > │ > │ > │ > > ............................>>>>>>>>>>>>>>>>>>>>>>>/////////.................... > │ > > ................................................................................ > │ > │ > │ > > ...............................>>>>>>>>>>>>>>>>>>>>>>>/////..................... > │ > > ................................................................................ > │ > │ > │ > > ..................................>>>>>>>>>>>>>>>>>>>>>>//...................... > │ > > ................................................................................ > │ > │ > │ > > .....................................>>>>>>>>>>>>>>>>>>>>/...................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ........................................;;/<.................................... > │ > > ................................................................................ > │ > │ > │ > > ......................................;;;/////.................................. > │ > > ................................................................................ > │ > │ > │ > > ....................................;;;;////////................................ > │ > > ................................................................................ > │ > │ > │ > > ..................................;;;;;////////////............................. > │ > > ................................................................................ > │ > │ > │ > > ................................;;;;;;///////////////........................... > │ > > ................................................................................ > │ > │ > │ > > ..............................;;;;;;;//////////////////......................... > │ > > ................................................................................ > │ > │ > │ > > ............................;;;;;;;;//////////////////////...................... > │ > > ................................................................................ > │ > │ > │ > > ..........................;;;;;;;;//////////////////////////.................... > │ > > ................................................................................ > │ > │ > │ > > .........................;;;;;;;;/////////////////////////////<................. > │ > > ........;;;//................................................................... > │ > │ > │ > > ........................;;;;;;;;////////////////////////////////<............... > │ > > .....;;;;;//////................................................................ > │ > │ > │ > > .......................;;;;;;;;////////////////////////////////////............. > │ > > ..<;;;;;;/////////<............................................................. > │ > │ > │ > > .....................\;;;;;;;;/////////////////////////////////////............. > │ > > ..;;;;;;/////////////..................;;<...................................... > │ > │ > │ > > ....................;;;;;;;;;/////////////////////////////////////.............. > │ > > \;;;;;;/////////////////............;;;;////.................................... > │ > │ > │ > > ...................;;;;;;;;;//////////////////////////////////////.............. > │ > > ;;;;;;/////////////////............;;;;////////................................. > │ > │ > │ > > ..................;;;;;;;;;//////////////////////////////////////.............\; > │ > > ;;;;;//////////////////...........;;;;/////////................................. > │ > │ > │ > > .................;;;;;;;;;;>/////////////////////////////////////............\;; > │ > > ;;;;;>>///////////////...........;;;;;>>>/////.................................. > │ > │ > │ > > ................;;;;;;;;>>>>>>>>////////////////////////////////............\;;; > │ > > ;>>>>>>>>>////////////...........;>>>>>>>>>//................................... > │ > │ > │ > > ...............;;;;;;>>>>>>>>>>>>>>/////////////////////////////............;>>> > │ > > >>>>>>>>>>>>>////////...............>>>>>>>>/................................... > │ > │ > │ > > ..............;;;;>>>>>>>>>>>>>>>>>>>>/////////////////////////................> > │ > > >>>>>>>>>>>>>>>>////...................=>....................................... > │ > │ > │ > > .............;>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////////................. > │ > > ..\>>>>>>>>>>>>>>>>............................................................. > │ > │ > │ > > ................>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////.................. > │ > > ......>>>>>>>>>=>............................................................... > │ > │ > │ > > ....................>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////.................. > │ > > ................................................................................ > │ > │ > │ > > .......................>>>>>>>>>>>>>>>>>>>>>>>>>>>///////////................... > │ > > ................................................................................ > │ > │ > │ > > ...........................>>>>>>>>>>>>>>>>>>>>>>>>>>>///////................... > │ > > ................................................................................ > │ > │ > │ > > ..............................>>>>>>>>>>>>>>>>>>>>>>>>>>>///.................... > │ > > ................................................................................ > │ > │ > │ > > ..................................>>>>>>>>>>>>>>>>>>>>>>>>>/.................... > │ > > ................................................................................ > │ > │ > │ > > ......................................>>>>>=>=>>................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .......................................;;//..................................... > │ > > ................................................................................ > │ > │ > │ > > .....................................;;;/////<.................................. > │ > > ................................................................................ > │ > │ > │ > > ...................................;;;;/////////................................ > │ > > ................................................................................ > │ > │ > │ > > .................................;;;;;;///////////<............................. > │ > > ................................................................................ > │ > │ > │ > > ...............................;;;;;;;///////////////........................... > │ > > ................................................................................ > │ > │ > │ > > .............................;;;;;;;;//////////////////......................... > │ > > ................................................................................ > │ > │ > │ > > ...........................;;;;;;;;;//////////////////////...................... > │ > > ................................................................................ > │ > │ > │ > > .........................;;;;;;;;;;/////////////////////////.................... > │ > > ................................................................................ > │ > │ > │ > > ........................;;;;;;;;;;;///////////////////////////<................. > │ > > ........;;;//................................................................... > │ > │ > │ > > .......................;;;;;;;;;;;///////////////////////////////............... > │ > > .....;;;;;//////................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;/////////////////////////////////.............. > │ > > ..;;;;;;;/////////<............................................................. > │ > │ > │ > > .....................;;;;;;;;;;;//////////////////////////////////.............. > │ > > .;;;;;;;/////////////..................;;<...................................... > │ > │ > │ > > ....................;;;;;;;;;;;//////////////////////////////////............... > │ > > ;;;;;;;;///////////////.............;;;;////<................................... > │ > │ > │ > > ...................;;;;;;;;;;;;//////////////////////////////////..............; > │ > > ;;;;;;;////////////////............;;;;////////................................. > │ > │ > │ > > ..................;;;;;;;;;;;;///////////////////////////////////..............; > │ > > ;;;;;;/////////////////...........;;;;;////////................................. > │ > │ > │ > > .................;;;;;;;;;;;;///////////////////////////////////..............;; > │ > > ;;;;;;>>//////////////...........;;;;;>>>/////.................................. > │ > │ > │ > > ................;;;;;;;;;;;;>>>>>///////////////////////////////.............;;; > │ > > ;;>>>>>>>>>///////////...........;>>>>>>>>>>//.................................. > │ > │ > │ > > ...............;;;;;;;;;>>>>>>>>>>>>////////////////////////////............\;;> > │ > > >>>>>>>>>>>>>>///////...............>>>>>>>>>................................... > │ > │ > │ > > ..............;;;;;;;>>>>>>>>>>>>>>>>>>>///////////////////////...............\> > │ > > >>>>>>>>>>>>>>>>>>///..................>=....................................... > │ > │ > │ > > .............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>////////////////////................. > │ > > ..>>>>>>>>>>>>>>>>>>............................................................ > │ > │ > │ > > .............>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////////////////................. > │ > > ......>>>>>>>>>>=............................................................... > │ > │ > │ > > .................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////////.................. > │ > > ................................................................................ > │ > │ > │ > > ......................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////.................. > │ > > ................................................................................ > │ > │ > │ > > ..........................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////.................. > │ > > ................................................................................ > │ > │ > │ > > ..............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//.................. > │ > > ................................................................................ > │ > │ > │ > > ..................................>>>>>>>>>>>>>>>>>>>>>>>>>>>................... > │ > > ................................................................................ > │ > │ > │ > > ......................................>>>==..................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .......................................;;/<..................................... > │ > > ................................................................................ > │ > │ > │ > > ....................................<;;;/////................................... > │ > > ................................................................................ > │ > │ > │ > > ..................................;;;;;////////<................................ > │ > > ................................................................................ > │ > │ > │ > > ................................;;;;;;;///////////.............................. > │ > > ................................................................................ > │ > │ > │ > > ..............................;;;;;;;;//////////////<........................... > │ > > ................................................................................ > │ > │ > │ > > ............................;;;;;;;;;;/////////////////......................... > │ > > ................................................................................ > │ > │ > │ > > ..........................;;;;;;;;;;;////////////////////<...................... > │ > > ................................................................................ > │ > │ > │ > > ........................;;;;;;;;;;;;////////////////////////.................... > │ > > ................................................................................ > │ > │ > │ > > .......................;;;;;;;;;;;;;///////////////////////////................. > │ > > ........;;///................................................................... > │ > │ > │ > > ......................;;;;;;;;;;;;;//////////////////////////////............... > │ > > .....;;;;;//////................................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;//////////////////////////////............... > │ > > ..;;;;;;;//////////............................................................. > │ > │ > │ > > ....................;;;;;;;;;;;;;;///////////////////////////////............... > │ > > \;;;;;;;;////////////<.................;;....................................... > │ > │ > │ > > ...................\;;;;;;;;;;;;;///////////////////////////////................ > │ > > ;;;;;;;;///////////////............<;;;;////<................................... > │ > │ > │ > > ...................;;;;;;;;;;;;;;///////////////////////////////...............; > │ > > ;;;;;;;;///////////////...........\;;;;////////................................. > │ > │ > │ > > ..................;;;;;;;;;;;;;;////////////////////////////////..............\; > │ > > ;;;;;;;///////////////............;;;;;////////................................. > │ > │ > │ > > .................;;;;;;;;;;;;;;;////////////////////////////////..............;; > │ > > ;;;;;;;>//////////////...........\;;;;;>>>////.................................. > │ > │ > │ > > ................;;;;;;;;;;;;;;;>>>//////////////////////////////.............;;; > │ > > ;;;;>>>>>>>>//////////...........;;>>>>>>>>>>/.................................. > │ > │ > │ > > ................;;;;;;;;;;;;>>>>>>>>>>//////////////////////////.............;;; > │ > > >>>>>>>>>>>>>>>>/////..............\>>>>>>>>/................................... > │ > │ > │ > > ...............;;;;;;;;;>>>>>>>>>>>>>>>>>>//////////////////////.............\>> > │ > > >>>>>>>>>>>>>>>>>>>//..................\=....................................... > │ > │ > │ > > ..............;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////................ > │ > > .\>>>>>>>>>>>>>>>>>>/........................................................... > │ > │ > │ > > .............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////////////................. > │ > > ......>>>>>>>>>>................................................................ > │ > │ > │ > > ...............>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////................. > │ > > ................................................................................ > │ > │ > │ > > ...................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////................. > │ > > ................................................................................ > │ > │ > │ > > ........................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//................. > │ > > ................................................................................ > │ > │ > │ > > .............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/................. > │ > > ................................................................................ > │ > │ > │ > > ..................................>>>>>>>>>>>>>>>>>>>>==........................ > │ > > ................................................................................ > │ > │ > │ > > .......................................>==...................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ......................................;;//...................................... > │ > > ................................................................................ > │ > │ > │ > > ....................................;;;;////.................................... > │ > > ................................................................................ > │ > │ > │ > > ..................................;;;;;////////................................. > │ > > ................................................................................ > │ > │ > │ > > ...............................<;;;;;;;///////////.............................. > │ > > ................................................................................ > │ > │ > │ > > .............................;;;;;;;;;//////////////............................ > │ > > ................................................................................ > │ > │ > │ > > ...........................;;;;;;;;;;;/////////////////......................... > │ > > ................................................................................ > │ > │ > │ > > .........................;;;;;;;;;;;;;///////////////////<...................... > │ > > ................................................................................ > │ > │ > │ > > .......................;;;;;;;;;;;;;;///////////////////////.................... > │ > > ................................................................................ > │ > │ > │ > > .....................\;;;;;;;;;;;;;;;//////////////////////////................. > │ > > .......<;;//<................................................................... > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;///////////////////////////................ > │ > > ....<;;;;;//////................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;////////////////////////////................ > │ > > ..;;;;;;;;/////////............................................................. > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;////////////////////////////................ > │ > > ;;;;;;;;;/////////////.................;/....................................... > │ > │ > │ > > ...................;;;;;;;;;;;;;;;;/////////////////////////////...............; > │ > > ;;;;;;;;;/////////////.............<;;;;////<................................... > │ > │ > │ > > ..................;;;;;;;;;;;;;;;;;/////////////////////////////...............; > │ > > ;;;;;;;;//////////////............\;;;;;//////.................................. > │ > │ > │ > > ..................;;;;;;;;;;;;;;;;;/////////////////////////////..............\; > │ > > ;;;;;;;;//////////////............;;;;;///////.................................. > │ > │ > │ > > .................;;;;;;;;;;;;;;;;;//////////////////////////////..............;; > │ > > ;;;;;;;;>/////////////............;;;;;>>>////.................................. > │ > │ > │ > > .................;;;;;;;;;;;;;;;;;>/////////////////////////////..............;; > │ > > ;;;;;;>>>>>>>/////////...........;;;>>>>>>>>>/.................................. > │ > │ > │ > > ................;;;;;;;;;;;;;;;;>>>>>>>/////////////////////////.............;;; > │ > > ;;>>>>>>>>>>>>>>>/////.............\>>>>>>>>>=.................................. > │ > │ > │ > > ...............;;;;;;;;;;;;;>>>>>>>>>>>>>>>/////////////////////.............;>> > │ > > >>>>>>>>>>>>>>>>>>>>>/..................>....................................... > │ > │ > │ > > ...............;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>////////////////................ > │ > > .>>>>>>>>>>>>>>>>>>>/........................................................... > │ > │ > │ > > ..............;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////////................ > │ > > ......>>>>>>>>>>................................................................ > │ > │ > │ > > ..............;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////................ > │ > > ................................................................................ > │ > │ > │ > > .................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////................ > │ > > ................................................................................ > │ > │ > │ > > ......................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>................ > │ > > ................................................................................ > │ > │ > │ > > ............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.................. > │ > > ................................................................................ > │ > │ > │ > > ..................................>>>>>>>>>>>>>>>>>>............................ > │ > > ................................................................................ > │ > │ > │ > > .......................................>=....................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .....................................<;;/<...................................... > │ > > ................................................................................ > │ > │ > │ > > ...................................;;;;;///<.................................... > │ > > ................................................................................ > │ > │ > │ > > .................................;;;;;;///////<................................. > │ > > ................................................................................ > │ > │ > │ > > ...............................;;;;;;;;//////////<.............................. > │ > > ................................................................................ > │ > │ > │ > > ............................<;;;;;;;;;;/////////////............................ > │ > > ................................................................................ > │ > │ > │ > > ..........................<;;;;;;;;;;;;///////////////<......................... > │ > > ................................................................................ > │ > │ > │ > > ........................;;;;;;;;;;;;;;;//////////////////<...................... > │ > > ................................................................................ > │ > │ > │ > > ......................;;;;;;;;;;;;;;;;//////////////////////.................... > │ > > ................................................................................ > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;////////////////////////.................. > │ > > .......;;;//.................................................................... > │ > │ > │ > > ....................;;;;;;;;;;;;;;;;;;/////////////////////////................. > │ > > ....;;;;;;//////................................................................ > │ > │ > │ > > ...................;;;;;;;;;;;;;;;;;;;/////////////////////////................. > │ > > .<;;;;;;;;////////<............................................................. > │ > │ > │ > > ...................;;;;;;;;;;;;;;;;;;;/////////////////////////................; > │ > > ;;;;;;;;;;////////////.................;/....................................... > │ > │ > │ > > ..................\;;;;;;;;;;;;;;;;;;//////////////////////////................; > │ > > ;;;;;;;;;/////////////.............<;;;;////<................................... > │ > │ > │ > > ..................;;;;;;;;;;;;;;;;;;;//////////////////////////................; > │ > > ;;;;;;;;;/////////////............;;;;;;//////.................................. > │ > │ > │ > > ..................;;;;;;;;;;;;;;;;;;;///////////////////////////..............;; > │ > > ;;;;;;;;;/////////////............;;;;;;//////.................................. > │ > │ > │ > > .................;;;;;;;;;;;;;;;;;;;;///////////////////////////..............;; > │ > > ;;;;;;;;;>////////////............;;;;;;>>////.................................. > │ > │ > │ > > .................;;;;;;;;;;;;;;;;;;;;///////////////////////////..............;; > │ > > ;;;;;;;;>>>>/>////////............;;;>>>>>>>>>.................................. > │ > │ > │ > > ................;;;;;;;;;;;;;;;;;;;;>>>>>///////////////////////.............\;; > │ > > ;;;>>>>>>>>>>>>>/>////.............>>>>>>>>>=................................... > │ > │ > │ > > ................;;;;;;;;;;;;;;;;>>>>>>>>>>>>>>//////////////////.............;;; > │ > > >>>>>>>>>>>>>>>>>>>>>>..................=....................................... > │ > │ > │ > > ...............;;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>//////////////................ > │ > > >>>>>>>>>>>>>>>>>>>>>........................................................... > │ > │ > │ > > ...............;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////............... > │ > > .....\>>>>>>>>=................................................................. > │ > │ > │ > > ..............;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////............... > │ > > ................................................................................ > │ > │ > │ > > ..............;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/............... > │ > > ................................................................................ > │ > │ > │ > > ....................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>............... > │ > > ................................................................................ > │ > │ > │ > > ..........................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>...................... > │ > > ................................................................................ > │ > │ > │ > > .................................>>>>>>>>>>>>>>>>............................... > │ > > ................................................................................ > │ > │ > │ > > ........................................=....................................... > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > .....................................;;//....................................... > │ > > ................................................................................ > │ > │ > │ > > ...................................;;;;////<.................................... > │ > > ................................................................................ > │ > │ > │ > > ................................<;;;;;;///////.................................. > │ > > ................................................................................ > │ > │ > │ > > ..............................<;;;;;;;;/////////<............................... > │ > > ................................................................................ > │ > │ > │ > > ............................;;;;;;;;;;;////////////<............................ > │ > > ................................................................................ > │ > │ > │ > > ..........................;;;;;;;;;;;;;///////////////<......................... > │ > > ................................................................................ > │ > │ > │ > > .......................<;;;;;;;;;;;;;;;//////////////////....................... > │ > > ................................................................................ > │ > │ > │ > > .....................;;;;;;;;;;;;;;;;;;/////////////////////.................... > │ > > ................................................................................ > │ > │ > │ > > ...................;;;;;;;;;;;;;;;;;;;;//////////////////////................... > │ > > .......;;;//.................................................................... > │ > │ > │ > > ...................;;;;;;;;;;;;;;;;;;;;///////////////////////.................. > │ > > ....;;;;;;//////................................................................ > │ > │ > │ > > ..................\;;;;;;;;;;;;;;;;;;;;///////////////////////.................. > │ > > .;;;;;;;;;/////////............................................................. > │ > │ > │ > > ..................;;;;;;;;;;;;;;;;;;;;;///////////////////////.................; > │ > > ;;;;;;;;;;///////////..................;/....................................... > │ > │ > │ > > ..................;;;;;;;;;;;;;;;;;;;;;////////////////////////................; > │ > > ;;;;;;;;;;////////////.............<;;;;////<................................... > │ > │ > │ > > ..................;;;;;;;;;;;;;;;;;;;;;////////////////////////...............\; > │ > > ;;;;;;;;;;////////////............;;;;;;//////.................................. > │ > │ > │ > > .................;;;;;;;;;;;;;;;;;;;;;;////////////////////////...............;; > │ > > ;;;;;;;;;;////////////............;;;;;;//////.................................. > │ > │ > │ > > .................;;;;;;;;;;;;;;;;;;;;;;/////////////////////////..............;; > │ > > ;;;;;;;;;;>///////////............;;;;;;>>>///.................................. > │ > │ > │ > > .................;;;;;;;;;;;;;;;;;;;;;;/////////////////////////..............;; > │ > > ;;;;;;;;;>>>>>>///////............;;;;>>>>>>>>.................................. > │ > │ > │ > > ................;;;;;;;;;;;;;;;;;;;;;;;>>>>/////////////////////..............;; > │ > > ;;;;;;>>>>>>>>>>>>>>//.............>>>>>>>>>=................................... > │ > │ > │ > > ................;;;;;;;;;;;;;;;;;;;>>>>>>>>>>>>>/////////////////.............;; > │ > > ;;>>>>>>>>>>>>>>>>>>>>..................=....................................... > │ > │ > │ > > ................;;;;;;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>////////////..............\ > │ > > >>>>>>>>>>>>>>>>>>>>............................................................ > │ > │ > │ > > ...............\;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>///////............... > │ > > .....>>>>>>>>>=................................................................. > │ > │ > │ > > ...............;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>///.............. > │ > > ................................................................................ > │ > │ > │ > > ...............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.............. > │ > > ................................................................................ > │ > │ > │ > > ................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=.................. > │ > > ................................................................................ > │ > │ > │ > > ........................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=......................... > │ > > ................................................................................ > │ > │ > │ > > .................................\>>>>>>>>>>>>>=................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > > ................................................................................ > │ > > ................................................................................ > │ > │ > │ > │ > │ 00:02:30 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 449170 } > │ 00:02:30 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb", "--to", "html", > "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:02:32 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.ipynb to html > │ 00:02:32 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:02:32 v #7 ! validate(nb) > │ 00:02:32 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:02:32 v #9 ! return _pygments_highlight( > │ 00:02:33 v #10 ! [NbConvertApp] Writing 800315 bytes to > c:\home\git\polyglot\apps\spiral\temp\cube\cube.dib.html > │ 00:02:33 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 872 } > │ 00:02:33 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 872 } > │ 00:02:33 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.html'; (Get-Content $path > -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + > $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; > $path = 'c:/home/git/polyglot/apps/spiral/temp/cube/cube.dib.html'; (Get-Content > $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + > $counter++ } | Set-Content $path"; cancellation_token = None; > environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace > = true; working_directory = None } } > │ 00:02:33 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:02:33 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:02:33 d #16 spiral.run / dib / { exit_code = 0; > result_length = 450101 } > │ 00:00:00 d #1 writeDibCode / output: Spi / path: > cube.dib > │ 00:00:00 d #2 parseDibCode / output: Spi / file: > cube.dib > │ 00:00:00 d #1 persistCodeProject / packages: > [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; > deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: > cube / hash: / code.Length: 48866 > │ spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: > C:\home\git\polyglot\target\Builder\cube > │ polyglot/scripts/core.ps1/ResolveLink #4 / Path: > C:\home\git\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: > / path_target: C:\home\git\polyglot / parent: > C:\home\git\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot > │ spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: > C:\home\git\polyglot\target\Builder\cube / ProjectName: cube / Language: rs / > Runtime: / root: C:\home\git\polyglot > │ Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) > │ > │ Thanks to the contributor! @fdcastel > │ Stand with Ukraine! https://standwithukraine.com.ua/ > │ > │ Parsing target\Builder\cube\cube.fsproj... > │ Project and references (14 source files) parsed in 3707ms > │ > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInt > erop.dll for Fable plugins, skipping this assembly. Original error: The > exception has been reported. This internal exception should now be caught at an > error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The > exception has been reported. This internal exception should now be caught at an > error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. > Original error: The exception has been reported. This internal exception should > now be caught at an error recovery point on the stack. Original message: The > type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You > must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original > error: The exception has been reported. This internal exception should now be > caught at an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The > exception has been reported. This internal exception should now be caught at an > error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: > The exception has been reported. This internal exception should now be caught at > an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original > error: The exception has been reported. This internal exception should now be > caught at an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original > error: The exception has been reported. This internal exception should now be > caught at an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. > Original error: The exception has been reported. This internal exception should > now be caught at an error recovery point on the stack. Original message: The > type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You > must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Components.dll for Fable plugins, skipping this assembly. Original error: > The exception has been reported. This internal exception should now be caught at > an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ > │ Started Fable compilation... > │ > │ Fable compilation finished in 9934ms > │ > │ .\deps\spiral\lib\spiral\common.fsx(2199,0): (2199,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\sm.fsx(561,0): (561,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\crypto.fsx(2426,0): (2426,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\networking.fsx(5050,0): (5050,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\trace.fsx(2232,0): (2232,2) warning > FABLE: For Rust, support for F# static and module do bindings is disabled by > default. It can be enabled with the 'static_do_bindings' feature. Use at your > own risk! > │ .\deps\spiral\lib\spiral\runtime.fsx(7321,0): (7321,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ .\deps\spiral\lib\spiral\file_system.fsx(19036,0): (19036,2) > warning FABLE: For Rust, support for F# static and module do bindings is > disabled by default. It can be enabled with the 'static_do_bindings' feature. > Use at your own risk! > │ polyglot/scripts/core.ps1/ResolveLink #4 / Path: > C:\home\git\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: > / path_target: C:\home\git\polyglot / parent: > C:\home\git\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot > │ spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: > C:\home\git\polyglot\target\Builder\cube / ProjectName: cube / Language: ts / > Runtime: / root: C:\home\git\polyglot > │ Fable 5.0.0-alpha.9: F# to TypeScript compiler > │ Minimum @fable-org/fable-library-ts version (when installed > from npm): 1.10.0 > │ > │ Thanks to the contributor! @2sComplement > │ Stand with Ukraine! https://standwithukraine.com.ua/ > │ > │ Parsing target\Builder\cube\cube.fsproj... > │ Project and references (14 source files) parsed in 58800ms > │ > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInt > erop.dll for Fable plugins, skipping this assembly. Original error: The > exception has been reported. This internal exception should now be caught at an > error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The > exception has been reported. This internal exception should now be caught at an > error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. > Original error: The exception has been reported. This internal exception should > now be caught at an error recovery point on the stack. Original message: The > type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You > must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original > error: The exception has been reported. This internal exception should now be > caught at an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The > exception has been reported. This internal exception should now be caught at an > error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: > The exception has been reported. This internal exception should now be caught at > an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original > error: The exception has been reported. This internal exception should now be > caught at an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original > error: The exception has been reported. This internal exception should now be > caught at an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. > Original error: The exception has been reported. This internal exception should > now be caught at an error recovery point on the stack. Original message: The > type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You > must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Components.dll for Fable plugins, skipping this assembly. Original error: > The exception has been reported. This internal exception should now be caught at > an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ > │ Started Fable compilation... > │ > │ Fable compilation finished in 9619ms > │ > │ .\deps\spiral\lib\spiral\sm.fsx(38,20): (38,49) warning > FABLE: CultureInfo argument is ignored > │ .\deps\spiral\lib\spiral\sm.fsx(307,20): (307,51) warning > FABLE: CultureInfo argument is ignored > │ polyglot/scripts/core.ps1/ResolveLink #4 / Path: > C:\home\git\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: > / path_target: C:\home\git\polyglot / parent: > C:\home\git\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot > │ spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: > C:\home\git\polyglot\target\Builder\cube / ProjectName: cube / Language: py / > Runtime: / root: C:\home\git\polyglot > │ Fable 5.0.0-alpha.9: F# to Python compiler (status: beta) > │ > │ Thanks to the contributor! @ritcoder > │ Stand with Ukraine! https://standwithukraine.com.ua/ > │ > │ Parsing target\Builder\cube\cube.fsproj... > │ Project and references (14 source files) parsed in 22370ms > │ > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInt > erop.dll for Fable plugins, skipping this assembly. Original error: The > exception has been reported. This internal exception should now be caught at an > error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The > exception has been reported. This internal exception should now be caught at an > error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. > Original error: The exception has been reported. This internal exception should > now be caught at an error recovery point on the stack. Original message: The > type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You > must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original > error: The exception has been reported. This internal exception should now be > caught at an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The > exception has been reported. This internal exception should now be caught at an > error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: > The exception has been reported. This internal exception should now be caught at > an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original > error: The exception has been reported. This internal exception should now be > caught at an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original > error: The exception has been reported. This internal exception should now be > caught at an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. > Original error: The exception has been reported. This internal exception should > now be caught at an error recovery point on the stack. Original message: The > type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You > must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ Could not scan C:/Program > Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNe > tCore.Components.dll for Fable plugins, skipping this assembly. Original error: > The exception has been reported. This internal exception should now be caught at > an error recovery point on the stack. Original message: The type > 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must > add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, > Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) > │ > │ Started Fable compilation... > │ > │ Fable compilation finished in 10177ms > │ > │ .\deps\spiral\lib\spiral\sm.fsx(38,20): (38,49) warning > FABLE: CultureInfo argument is ignored > │ .\deps\spiral\lib\spiral\sm.fsx(307,20): (307,51) warning > FABLE: CultureInfo argument is ignored > │ polyglot/apps/spiral/temp/cube/build.ps1 / $targetDir: > C:\home\git\polyglot\target\Builder\cube / $projectName: cube / $env:CI:'' > │ bun install v1.2.7 (5c0fa6dc) > │ > │ Checked 11 installs across 13 packages (no changes) [52.00ms] > │ [INFO]: 🎯 Checking for the Wasm target... > │ [INFO]: 🌀 Compiling to Wasm... > │ warning: > C:\home\git\polyglot\apps\chat\contract\tests\Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > C:\home\git\polyglot\examples\rust\exercism\Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: C:\home\git\polyglot\lib\math\Cargo.toml: the > cargo feature `edition2024` has been stabilized in the 1.85 release and is no > longer necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: C:\home\git\polyglot\workspace\Cargo.toml: the > cargo feature `edition2024` has been stabilized in the 1.85 release and is no > longer necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > C:\home\git\polyglot\apps\spiral\temp\extension\Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > C:\home\git\polyglot\apps\chat\contract\Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: C:\home\git\polyglot\apps\plot\Cargo.toml: the > cargo feature `edition2024` has been stabilized in the 1.85 release and is no > longer necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > C:\home\git\polyglot\apps\spiral\temp\cube\Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > C:\home\git\polyglot\apps\spiral\temp\test\Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ Compiling spiral_temp_extension v0.0.1 > (C:\home\git\polyglot\apps\spiral\temp\extension) > │ Finished `dev` profile [unoptimized + debuginfo] > target(s) in 5.96s > │ [INFO]: ⬇️ Installing wasm-bindgen... > │ [INFO]: Optional field missing from Cargo.toml: > 'description'. This is not necessary, but recommended > │ [INFO]: ✨ Done in 7.01s > │ [INFO]: 📦 Your wasm pkg is ready to publish at > C:\home\git\polyglot\apps\spiral\temp\extension\pkg. > │ ▲ [WARNING] "import.meta" is not available with the > "iife" output format and will be empty [empty-import-meta] > │ > │ pkg/spiral_temp_extension.js:1445:66: > │ 1445 │ ...ath = new > URL('spiral_temp_extension_bg.wasm', import.meta.url); > │ ╵ > ~~~~~~~~~~~ > │ > │ You need to set the output format to "esm" for > "import.meta" to work correctly. > │ > │ 1 warning > │ > │ dist\spiral_temp_extension_bg-G3V32LGU.wasm 4.5mb > ⚠️ > │ dist\devtools.js 29.0kb > │ dist\content_script.js 26.4kb > │ dist\service_worker.js 2.2kb > │ > │ ⚡ Done in 51ms > │ $ playwright test > │ > │ Running 3 tests using 3 workers > │ > │ [1/3] [Desktop Chrome] › extension.spec.ts:3:5 › popup > localhost > │ [2/3] [Desktop Chrome] › extension.spec.ts:10:5 › popup > extension > │ [3/3] [Desktop Chrome] › extension.spec.ts:15:5 › libgen > │ 3 passed (8.6s) > │ > │ To open last HTML report run: > │ > │ npx playwright show-report > │ > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "build.dib"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "c:/home/git/polyglot/apps/spiral/temp/test/build.dib", "--output-path", > "c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb"]; options = { > command = dotnet repl --exit-after-run --run > "c:/home/git/polyglot/apps/spiral/temp/test/build.dib" --output-path > "c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb"; cancellation_token > = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), > ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; > working_directory = None } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # test > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## include scripts > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### include notebook core > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > . ../../../../scripts/nbs_header.ps1 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### Include core functions script > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > . ../../../../scripts/core.ps1 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### Include spiral library > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > . ../../../../deps/spiral/lib/spiral/lib.ps1 > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## execute project commands > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### run notebook with retries using > spiral supervisor > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > { . > ../../../../deps/spiral/workspace/target/release/spiral$(_exe) dib --path > │ > test.dib --retries 3 } | Invoke-Block > │ > > │ > ── [ 16.00s - stdout ] > ───────────────────────────────────────────────────────── > │ > │ 00:00:00 d #1 spiral.main / { args > = > │ > Array(MutCell(["dib", "--path", "test.dib", "--retries", > "3"])) } > │ > │ 00:00:00 d #2 > runtime.execute_with_options / { > │ > file_name = dotnet; arguments = ["repl", > "--exit-after-run", "--run", > │ > "c:/home/git/polyglot/apps/spiral/temp/test/test.dib", > "--output-path", > │ > > "c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb"]; options = { > │ > command = dotnet repl --exit-after-run --run > │ > "c:/home/git/polyglot/apps/spiral/temp/test/test.dib" > --output-path > │ > > "c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb"; cancellation_token > │ > = None; environment_variables = > Array(MutCell([("TRACE_LEVEL", "Verbose"), > │ > ("AUTOMATION", "True")])); on_line = None; stdin = None; > trace = false; > │ > working_directory = None } } > │ > │ > > │ > │ > ── markdown > │ > > ──────────────────────────────────────────────────────────────────── > │ > │ > │ # test (Polyglot) > │ > │ > > │ > │ > ── spiral > │ > > ────────────────────────────────────────────────────────────────────── > │ > │ > //// test > │ > │ > > │ > │ > open testing > │ > │ > > │ > │ > ── spiral > │ > > ────────────────────────────────────────────────────────────────────── > │ > │ > //// test > │ > │ > //// print_code > │ > │ > > │ > │ > inl jp = [[ "J"; "P" ]] > │ > │ > inl tf = [[ "T"; "F" ]] > │ > │ > inl sn = [[ "S"; "N" ]] > │ > │ > inl ie = [[ "I"; "E" ]] > │ > │ > > │ > │ > (ie, ([[]] : _ string)) > │ > │ > ||> listm.foldBack fun ie' acc => > │ > │ > inl ssnn acc' jp' = > │ > │ > (sn, acc') > │ > │ > ||> listm.foldBack fun sn' > acc' => > │ > │ > inl c' ie' sn' tf' jp' = > │ > │ > > $'$"{!ie'}{!sn'}{!tf'}{!jp'}"' > │ > │ > > │ > │ > if listm.length acc' % > 4i32 = 2 then > │ > │ > (tf, acc') > │ > │ > ||> listm.foldBack fun > tf' acc'' => > │ > │ > c' ie' sn' tf' jp' > :: acc'' > │ > │ > else > │ > │ > (acc', tf) > │ > │ > ||> listm.fold fun > acc'' tf' => > │ > │ > c' ie' sn' tf' jp' > :: acc'' > │ > │ > if acc = [[]] then > │ > │ > (acc, jp) > │ > │ > ||> listm.fold fun acc' jp' => > │ > │ > ssnn acc' jp' > │ > │ > else > │ > │ > (jp, acc) > │ > │ > ||> listm.foldBack fun jp' > acc' => > │ > │ > ssnn acc' jp' > │ > │ > |> listm'.box > │ > │ > |> listm'.to_array' > │ > │ > |> _assert_eq' ;[[ > │ > │ > "ISTJ"; "ISFJ"; "INFJ"; "INTJ" > │ > │ > "ISTP"; "ISFP"; "INFP"; "INTP" > │ > │ > "ESTP"; "ESFP"; "ENFP"; "ENTP" > │ > │ > "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ" > │ > │ > ]] > │ > │ > > │ > │ > ── [ 1.33s - stdout ] > │ > ────────────────────────────────────────────────────────── > │ > │ > │ type Mut0 = > {mutable l0 : string} > │ > │ > │ let rec method1 (v0 > : bool) : bool = > │ > │ > │ v0 > │ > │ > │ and method2 () : > string = > │ > │ > │ let v0 : string > = "" > │ > │ > │ v0 > │ > │ > │ and closure0 (v0 : > Mut0, v1 : string) () > │ > : unit = > │ > │ > │ let v2 : string > = v0.l0 > │ > │ > │ let v4 : string > = v2 + v1 > │ > │ > │ v0.l0 <- v4 > │ > │ > │ () > │ > │ > │ and closure1 (v0 : > string) () : unit = > │ > │ > │ let v1 : > (string -> unit) = > │ > System.Console.WriteLine > │ > │ > │ v1 v0 > │ > │ > │ and method0 () : > unit = > │ > │ > │ let v0 : string > = "E" > │ > │ > │ let v1 : string > = "N" > │ > │ > │ let v2 : string > = "T" > │ > │ > │ let v3 : string > = "J" > │ > │ > │ let v4 : string > = > │ > $"{v0}{v1}{v2}{v3}" > │ > │ > │ let v5 : string > = "F" > │ > │ > │ let v6 : string > = > │ > $"{v0}{v1}{v5}{v3}" > │ > │ > │ let v7 : string > = "S" > │ > │ > │ let v8 : string > = > │ > $"{v0}{v7}{v5}{v3}" > │ > │ > │ let v9 : string > = > │ > $"{v0}{v7}{v2}{v3}" > │ > │ > │ let v10 : > string = "P" > │ > │ > │ let v11 : > string = > │ > $"{v0}{v1}{v2}{v10}" > │ > │ > │ let v12 : > string = > │ > $"{v0}{v1}{v5}{v10}" > │ > │ > │ let v13 : > string = > │ > $"{v0}{v7}{v5}{v10}" > │ > │ > │ let v14 : > string = > │ > $"{v0}{v7}{v2}{v10}" > │ > │ > │ let v15 : > string = "I" > │ > │ > │ let v16 : > string = > │ > $"{v15}{v1}{v2}{v10}" > │ > │ > │ let v17 : > string = > │ > $"{v15}{v1}{v5}{v10}" > │ > │ > │ let v18 : > string = > │ > $"{v15}{v7}{v5}{v10}" > │ > │ > │ let v19 : > string = > │ > $"{v15}{v7}{v2}{v10}" > │ > │ > │ let v20 : > string = > │ > $"{v15}{v1}{v2}{v3}" > │ > │ > │ let v21 : > string = > │ > $"{v15}{v1}{v5}{v3}" > │ > │ > │ let v22 : > string = > │ > $"{v15}{v7}{v5}{v3}" > │ > │ > │ let v23 : > string = > │ > $"{v15}{v7}{v2}{v3}" > │ > │ > │ let v24 : > string list = [] > │ > │ > │ let v26 : > string list = v4 :: v24 > │ > │ > │ let v30 : > string list = v6 :: v26 > │ > │ > │ let v34 : > string list = v8 :: v30 > │ > │ > │ let v38 : > string list = v9 :: v34 > │ > │ > │ let v42 : > string list = v11 :: v38 > │ > │ > │ let v46 : > string list = v12 :: v42 > │ > │ > │ let v50 : > string list = v13 :: v46 > │ > │ > │ let v54 : > string list = v14 :: v50 > │ > │ > │ let v58 : > string list = v16 :: v54 > │ > │ > │ let v62 : > string list = v17 :: v58 > │ > │ > │ let v66 : > string list = v18 :: v62 > │ > │ > │ let v70 : > string list = v19 :: v66 > │ > │ > │ let v74 : > string list = v20 :: v70 > │ > │ > │ let v78 : > string list = v21 :: v74 > │ > │ > │ let v82 : > string list = v22 :: v78 > │ > │ > │ let v86 : > string list = v23 :: v82 > │ > │ > │ let v90 : > (string list -> (string > │ > [])) = List.toArray > │ > │ > │ let v91 : > (string []) = v90 v86 > │ > │ > │ let v94 : > string = "ISTJ" > │ > │ > │ let v95 : > string = "ISFJ" > │ > │ > │ let v96 : > string = "INFJ" > │ > │ > │ let v97 : > string = "INTJ" > │ > │ > │ let v98 : > string = "ISTP" > │ > │ > │ let v99 : > string = "ISFP" > │ > │ > │ let v100 : > string = "INFP" > │ > │ > │ let v101 : > string = "INTP" > │ > │ > │ let v102 : > string = "ESTP" > │ > │ > │ let v103 : > string = "ESFP" > │ > │ > │ let v104 : > string = "ENFP" > │ > │ > │ let v105 : > string = "ENTP" > │ > │ > │ let v106 : > string = "ESTJ" > │ > │ > │ let v107 : > string = "ESFJ" > │ > │ > │ let v108 : > string = "ENFJ" > │ > │ > │ let v109 : > string = "ENTJ" > │ > │ > │ let v110 : > (string []) = [|v94; v95; > │ > v96; v97; v98; v99; > │ > │ > v100; v101; v102; v103; v104; v105; > v106; v107; v108; > │ > v109|] > │ > │ > │ let v112 : bool > = v91 = v110 > │ > │ > │ let v116 : bool > = > │ > │ > │ if v112 > then > │ > │ > │ true > │ > │ > │ else > │ > │ > │ > method1(v112) > │ > │ > │ let v117 : > string = method2() > │ > │ > │ let v118 : Mut0 > = {l0 = v117} : Mut0 > │ > │ > │ let v121 : > string = "{ " > │ > │ > │ let v122 : > string = $"{v121}" > │ > │ > │ let v130 : unit > = () > │ > │ > │ let v131 : > (unit -> unit) = > │ > closure0(v118, v122) > │ > │ > │ let v132 : unit > = (fun () -> v131 > │ > (); v130) () > │ > │ > │ let v140 : > string = "name" > │ > │ > │ let v141 : > string = $"{v140}" > │ > │ > │ let v149 : unit > = () > │ > │ > │ let v150 : > (unit -> unit) = > │ > closure0(v118, v141) > │ > │ > │ let v151 : unit > = (fun () -> v150 > │ > (); v149) () > │ > │ > │ let v159 : > string = " = " > │ > │ > │ let v160 : > string = $"{v159}" > │ > │ > │ let v168 : unit > = () > │ > │ > │ let v169 : > (unit -> unit) = > │ > closure0(v118, v160) > │ > │ > │ let v170 : unit > = (fun () -> v169 > │ > (); v168) () > │ > │ > │ let v178 : > string = "__assert_eq'" > │ > │ > │ let v179 : > string = $"{v178}" > │ > │ > │ let v187 : unit > = () > │ > │ > │ let v188 : > (unit -> unit) = > │ > closure0(v118, v179) > │ > │ > │ let v189 : unit > = (fun () -> v188 > │ > (); v187) () > │ > │ > │ let v197 : > string = "; " > │ > │ > │ let v198 : > string = $"{v197}" > │ > │ > │ let v206 : unit > = () > │ > │ > │ let v207 : > (unit -> unit) = > │ > closure0(v118, v198) > │ > │ > │ let v208 : unit > = (fun () -> v207 > │ > (); v206) () > │ > │ > │ let v216 : > string = "actual" > │ > │ > │ let v217 : > string = $"{v216}" > │ > │ > │ let v225 : unit > = () > │ > │ > │ let v226 : > (unit -> unit) = > │ > closure0(v118, v217) > │ > │ > │ let v227 : unit > = (fun () -> v226 > │ > (); v225) () > │ > │ > │ let v234 : > string = $"{v159}" > │ > │ > │ let v242 : unit > = () > │ > │ > │ let v243 : > (unit -> unit) = > │ > closure0(v118, v234) > │ > │ > │ let v244 : unit > = (fun () -> v243 > │ > (); v242) () > │ > │ > │ let v251 : > string = $"%A{v91}" > │ > │ > │ let v255 : > string = $"{v251}" > │ > │ > │ let v263 : unit > = () > │ > │ > │ let v264 : > (unit -> unit) = > │ > closure0(v118, v255) > │ > │ > │ let v265 : unit > = (fun () -> v264 > │ > (); v263) () > │ > │ > │ let v272 : > string = $"{v197}" > │ > │ > │ let v280 : unit > = () > │ > │ > │ let v281 : > (unit -> unit) = > │ > closure0(v118, v272) > │ > │ > │ let v282 : unit > = (fun () -> v281 > │ > (); v280) () > │ > │ > │ let v290 : > string = "expected" > │ > │ > │ let v291 : > string = $"{v290}" > │ > │ > │ let v299 : unit > = () > │ > │ > │ let v300 : > (unit -> unit) = > │ > closure0(v118, v291) > │ > │ > │ let v301 : unit > = (fun () -> v300 > │ > (); v299) () > │ > │ > │ let v308 : > string = $"{v159}" > │ > │ > │ let v316 : unit > = () > │ > │ > │ let v317 : > (unit -> unit) = > │ > closure0(v118, v308) > │ > │ > │ let v318 : unit > = (fun () -> v317 > │ > (); v316) () > │ > │ > │ let v325 : > string = $"%A{v110}" > │ > │ > │ let v329 : > string = $"{v325}" > │ > │ > │ let v337 : unit > = () > │ > │ > │ let v338 : > (unit -> unit) = > │ > closure0(v118, v329) > │ > │ > │ let v339 : unit > = (fun () -> v338 > │ > (); v337) () > │ > │ > │ let v347 : > string = " }" > │ > │ > │ let v348 : > string = $"{v347}" > │ > │ > │ let v356 : unit > = () > │ > │ > │ let v357 : > (unit -> unit) = > │ > closure0(v118, v348) > │ > │ > │ let v358 : unit > = (fun () -> v357 > │ > (); v356) () > │ > │ > │ let v364 : > string = v118.l0 > │ > │ > │ let v366 : unit > = () > │ > │ > │ let v367 : > (unit -> unit) = > │ > closure1(v364) > │ > │ > │ let v368 : unit > = (fun () -> v367 > │ > (); v366) () > │ > │ > │ let v370 : bool > = v116 = false > │ > │ > │ if v370 then > │ > │ > │ > failwith<unit> v364 > │ > │ > │ method0() > │ > │ > │ > │ > │ > │ { name = > __assert_eq'; actual = > │ > [|"ISTJ"; "ISFJ"; "INFJ"; > │ > │ > "INTJ"; "ISTP"; "ISFP"; "INFP"; > "INTP"; "ESTP"; "ESFP"; > │ > │ > │ "ENFP"; "ENTP"; > "ESTJ"; "ESFJ"; > │ > "ENFJ"; "ENTJ"|]; expected > │ > │ > = [|"ISTJ"; "ISFJ"; "INFJ"; "INTJ"; > "ISTP"; "ISFP"; "INFP"; > │ > "INTP"; "ESTP"; > │ > │ > "ESFP"; > │ > │ > │ "ENFP"; "ENTP"; > "ESTJ"; "ESFJ"; > │ > "ENFJ"; "ENTJ"|] } > │ > │ > │ > │ > │ > > │ > │ > ── spiral > │ > > ────────────────────────────────────────────────────────────────────── > │ > │ > //// test > │ > │ > //// print_code > │ > │ > > │ > │ > inl i_e = > │ > │ > listm'.replicate 8i32 "I" ++ > listm'.replicate 8i32 "E" > │ > │ > inl s_n = > │ > │ > [[ "S"; "S"; "N"; "N" ]] > │ > │ > |> listm'.replicate 4i32 > │ > │ > |> listm'.collect id > │ > │ > inl t_f = > │ > │ > [[ "T"; "F"; "F"; "T" ]] > │ > │ > |> listm'.replicate 4i32 > │ > │ > |> listm'.collect id > │ > │ > inl j_p = > │ > │ > [[ "J"; "J"; "J"; "J" ]] > │ > │ > ++ [[ "P"; "P"; "P"; "P" ]] > │ > │ > ++ [[ "P"; "P"; "P"; "P" ]] > │ > │ > ++ [[ "J"; "J"; "J"; "J" ]] > │ > │ > inl mbti = > │ > │ > listm'.map4 (fun a b c d => > $'$"{!a}{!b}{!c}{!d}"') i_e > │ > s_n t_f j_p > │ > │ > > │ > │ > mbti > │ > │ > |> listm'.box > │ > │ > |> listm'.to_array' > │ > │ > |> _assert_eq' ;[[ > │ > │ > "ISTJ"; "ISFJ"; "INFJ"; "INTJ" > │ > │ > "ISTP"; "ISFP"; "INFP"; "INTP" > │ > │ > "ESTP"; "ESFP"; "ENFP"; "ENTP" > │ > │ > "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ" > │ > │ > ]] > │ > │ > > │ > │ > ── [ 383.14ms - stdout ] > │ > ─────────────────────────────────────────────────────── > │ > │ > │ type Mut0 = > {mutable l0 : string} > │ > │ > │ let rec method1 (v0 > : bool) : bool = > │ > │ > │ v0 > │ > │ > │ and method2 () : > string = > │ > │ > │ let v0 : string > = "" > │ > │ > │ v0 > │ > │ > │ and closure0 (v0 : > Mut0, v1 : string) () > │ > : unit = > │ > │ > │ let v2 : string > = v0.l0 > │ > │ > │ let v4 : string > = v2 + v1 > │ > │ > │ v0.l0 <- v4 > │ > │ > │ () > │ > │ > │ and closure1 (v0 : > string) () : unit = > │ > │ > │ let v1 : > (string -> unit) = > │ > System.Console.WriteLine > │ > │ > │ v1 v0 > │ > │ > │ and method0 () : > unit = > │ > │ > │ let v0 : string > = "I" > │ > │ > │ let v1 : string > = "S" > │ > │ > │ let v2 : string > = "T" > │ > │ > │ let v3 : string > = "J" > │ > │ > │ let v4 : string > = > │ > $"{v0}{v1}{v2}{v3}" > │ > │ > │ let v5 : string > = "F" > │ > │ > │ let v6 : string > = > │ > $"{v0}{v1}{v5}{v3}" > │ > │ > │ let v7 : string > = "N" > │ > │ > │ let v8 : string > = > │ > $"{v0}{v7}{v5}{v3}" > │ > │ > │ let v9 : string > = > │ > $"{v0}{v7}{v2}{v3}" > │ > │ > │ let v10 : > string = "P" > │ > │ > │ let v11 : > string = > │ > $"{v0}{v1}{v2}{v10}" > │ > │ > │ let v12 : > string = > │ > $"{v0}{v1}{v5}{v10}" > │ > │ > │ let v13 : > string = > │ > $"{v0}{v7}{v5}{v10}" > │ > │ > │ let v14 : > string = > │ > $"{v0}{v7}{v2}{v10}" > │ > │ > │ let v15 : > string = "E" > │ > │ > │ let v16 : > string = > │ > $"{v15}{v1}{v2}{v10}" > │ > │ > │ let v17 : > string = > │ > $"{v15}{v1}{v5}{v10}" > │ > │ > │ let v18 : > string = > │ > $"{v15}{v7}{v5}{v10}" > │ > │ > │ let v19 : > string = > │ > $"{v15}{v7}{v2}{v10}" > │ > │ > │ let v20 : > string = > │ > $"{v15}{v1}{v2}{v3}" > │ > │ > │ let v21 : > string = > │ > $"{v15}{v1}{v5}{v3}" > │ > │ > │ let v22 : > string = > │ > $"{v15}{v7}{v5}{v3}" > │ > │ > │ let v23 : > string = > │ > $"{v15}{v7}{v2}{v3}" > │ > │ > │ let v24 : > string list = [] > │ > │ > │ let v26 : > string list = v23 :: v24 > │ > │ > │ let v30 : > string list = v22 :: v26 > │ > │ > │ let v34 : > string list = v21 :: v30 > │ > │ > │ let v38 : > string list = v20 :: v34 > │ > │ > │ let v42 : > string list = v19 :: v38 > │ > │ > │ let v46 : > string list = v18 :: v42 > │ > │ > │ let v50 : > string list = v17 :: v46 > │ > │ > │ let v54 : > string list = v16 :: v50 > │ > │ > │ let v58 : > string list = v14 :: v54 > │ > │ > │ let v62 : > string list = v13 :: v58 > │ > │ > │ let v66 : > string list = v12 :: v62 > │ > │ > │ let v70 : > string list = v11 :: v66 > │ > │ > │ let v74 : > string list = v9 :: v70 > │ > │ > │ let v78 : > string list = v8 :: v74 > │ > │ > │ let v82 : > string list = v6 :: v78 > │ > │ > │ let v86 : > string list = v4 :: v82 > │ > │ > │ let v90 : > (string list -> (string > │ > [])) = List.toArray > │ > │ > │ let v91 : > (string []) = v90 v86 > │ > │ > │ let v94 : > string = "ISTJ" > │ > │ > │ let v95 : > string = "ISFJ" > │ > │ > │ let v96 : > string = "INFJ" > │ > │ > │ let v97 : > string = "INTJ" > │ > │ > │ let v98 : > string = "ISTP" > │ > │ > │ let v99 : > string = "ISFP" > │ > │ > │ let v100 : > string = "INFP" > │ > │ > │ let v101 : > string = "INTP" > │ > │ > │ let v102 : > string = "ESTP" > │ > │ > │ let v103 : > string = "ESFP" > │ > │ > │ let v104 : > string = "ENFP" > │ > │ > │ let v105 : > string = "ENTP" > │ > │ > │ let v106 : > string = "ESTJ" > │ > │ > │ let v107 : > string = "ESFJ" > │ > │ > │ let v108 : > string = "ENFJ" > │ > │ > │ let v109 : > string = "ENTJ" > │ > │ > │ let v110 : > (string []) = [|v94; v95; > │ > v96; v97; v98; v99; > │ > │ > v100; v101; v102; v103; v104; v105; > v106; v107; v108; > │ > v109|] > │ > │ > │ let v112 : bool > = v91 = v110 > │ > │ > │ let v116 : bool > = > │ > │ > │ if v112 > then > │ > │ > │ true > │ > │ > │ else > │ > │ > │ > method1(v112) > │ > │ > │ let v117 : > string = method2() > │ > │ > │ let v118 : Mut0 > = {l0 = v117} : Mut0 > │ > │ > │ let v121 : > string = "{ " > │ > │ > │ let v122 : > string = $"{v121}" > │ > │ > │ let v130 : unit > = () > │ > │ > │ let v131 : > (unit -> unit) = > │ > closure0(v118, v122) > │ > │ > │ let v132 : unit > = (fun () -> v131 > │ > (); v130) () > │ > │ > │ let v140 : > string = "name" > │ > │ > │ let v141 : > string = $"{v140}" > │ > │ > │ let v149 : unit > = () > │ > │ > │ let v150 : > (unit -> unit) = > │ > closure0(v118, v141) > │ > │ > │ let v151 : unit > = (fun () -> v150 > │ > (); v149) () > │ > │ > │ let v159 : > string = " = " > │ > │ > │ let v160 : > string = $"{v159}" > │ > │ > │ let v168 : unit > = () > │ > │ > │ let v169 : > (unit -> unit) = > │ > closure0(v118, v160) > │ > │ > │ let v170 : unit > = (fun () -> v169 > │ > (); v168) () > │ > │ > │ let v178 : > string = "__assert_eq'" > │ > │ > │ let v179 : > string = $"{v178}" > │ > │ > │ let v187 : unit > = () > │ > │ > │ let v188 : > (unit -> unit) = > │ > closure0(v118, v179) > │ > │ > │ let v189 : unit > = (fun () -> v188 > │ > (); v187) () > │ > │ > │ let v197 : > string = "; " > │ > │ > │ let v198 : > string = $"{v197}" > │ > │ > │ let v206 : unit > = () > │ > │ > │ let v207 : > (unit -> unit) = > │ > closure0(v118, v198) > │ > │ > │ let v208 : unit > = (fun () -> v207 > │ > (); v206) () > │ > │ > │ let v216 : > string = "actual" > │ > │ > │ let v217 : > string = $"{v216}" > │ > │ > │ let v225 : unit > = () > │ > │ > │ let v226 : > (unit -> unit) = > │ > closure0(v118, v217) > │ > │ > │ let v227 : unit > = (fun () -> v226 > │ > (); v225) () > │ > │ > │ let v234 : > string = $"{v159}" > │ > │ > │ let v242 : unit > = () > │ > │ > │ let v243 : > (unit -> unit) = > │ > closure0(v118, v234) > │ > │ > │ let v244 : unit > = (fun () -> v243 > │ > (); v242) () > │ > │ > │ let v251 : > string = $"%A{v91}" > │ > │ > │ let v255 : > string = $"{v251}" > │ > │ > │ let v263 : unit > = () > │ > │ > │ let v264 : > (unit -> unit) = > │ > closure0(v118, v255) > │ > │ > │ let v265 : unit > = (fun () -> v264 > │ > (); v263) () > │ > │ > │ let v272 : > string = $"{v197}" > │ > │ > │ let v280 : unit > = () > │ > │ > │ let v281 : > (unit -> unit) = > │ > closure0(v118, v272) > │ > │ > │ let v282 : unit > = (fun () -> v281 > │ > (); v280) () > │ > │ > │ let v290 : > string = "expected" > │ > │ > │ let v291 : > string = $"{v290}" > │ > │ > │ let v299 : unit > = () > │ > │ > │ let v300 : > (unit -> unit) = > │ > closure0(v118, v291) > │ > │ > │ let v301 : unit > = (fun () -> v300 > │ > (); v299) () > │ > │ > │ let v308 : > string = $"{v159}" > │ > │ > │ let v316 : unit > = () > │ > │ > │ let v317 : > (unit -> unit) = > │ > closure0(v118, v308) > │ > │ > │ let v318 : unit > = (fun () -> v317 > │ > (); v316) () > │ > │ > │ let v325 : > string = $"%A{v110}" > │ > │ > │ let v329 : > string = $"{v325}" > │ > │ > │ let v337 : unit > = () > │ > │ > │ let v338 : > (unit -> unit) = > │ > closure0(v118, v329) > │ > │ > │ let v339 : unit > = (fun () -> v338 > │ > (); v337) () > │ > │ > │ let v347 : > string = " }" > │ > │ > │ let v348 : > string = $"{v347}" > │ > │ > │ let v356 : unit > = () > │ > │ > │ let v357 : > (unit -> unit) = > │ > closure0(v118, v348) > │ > │ > │ let v358 : unit > = (fun () -> v357 > │ > (); v356) () > │ > │ > │ let v364 : > string = v118.l0 > │ > │ > │ let v366 : unit > = () > │ > │ > │ let v367 : > (unit -> unit) = > │ > closure1(v364) > │ > │ > │ let v368 : unit > = (fun () -> v367 > │ > (); v366) () > │ > │ > │ let v370 : bool > = v116 = false > │ > │ > │ if v370 then > │ > │ > │ > failwith<unit> v364 > │ > │ > │ method0() > │ > │ > │ > │ > │ > │ { name = > __assert_eq'; actual = > │ > [|"ISTJ"; "ISFJ"; "INFJ"; > │ > │ > "INTJ"; "ISTP"; "ISFP"; "INFP"; > "INTP"; "ESTP"; "ESFP"; > │ > │ > │ "ENFP"; "ENTP"; > "ESTJ"; "ESFJ"; > │ > "ENFJ"; "ENTJ"|]; expected > │ > │ > = [|"ISTJ"; "ISFJ"; "INFJ"; "INTJ"; > "ISTP"; "ISFP"; "INFP"; > │ > "INTP"; "ESTP"; > │ > │ > "ESFP"; > │ > │ > │ "ENFP"; "ENTP"; > "ESTJ"; "ESFJ"; > │ > "ENFJ"; "ENTJ"|] } > │ > │ > │ > │ > │ > > │ > │ > ── spiral > │ > > ────────────────────────────────────────────────────────────────────── > │ > │ > //// test > │ > │ > //// print_code > │ > │ > > │ > │ > fun i => > │ > │ > inl i_e = > │ > │ > if i < 8 > │ > │ > then "I" > │ > │ > else "E" > │ > │ > inl s_n = > │ > │ > inl group = (i / 2) % 2 > │ > │ > if group = 0 > │ > │ > then "S" > │ > │ > else "N" > │ > │ > inl t_f = > │ > │ > match i % 4 with > │ > │ > | 0 => "T" > │ > │ > | 1 => "F" > │ > │ > | 2 => "F" > │ > │ > | _ => "T" > │ > │ > inl j_p = > │ > │ > if i < 4 > │ > │ > then "J" > │ > │ > elif i < 12 > │ > │ > then "P" > │ > │ > else "J" > │ > │ > $'$"{!i_e}{!s_n}{!t_f}{!j_p}"' > │ > │ > |> listm.init 16i32 > │ > │ > |> listm'.box > │ > │ > |> listm'.to_array' > │ > │ > |> _assert_eq' ;[[ > │ > │ > "ISTJ"; "ISFJ"; "INFJ"; "INTJ" > │ > │ > "ISTP"; "ISFP"; "INFP"; "INTP" > │ > │ > "ESTP"; "ESFP"; "ENFP"; "ENTP" > │ > │ > "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ" > │ > │ > ]] > │ > │ > > │ > │ > ── [ 368.96ms - stdout ] > │ > ─────────────────────────────────────────────────────── > │ > │ > │ type Mut0 = > {mutable l0 : string} > │ > │ > │ let rec method1 (v0 > : bool) : bool = > │ > │ > │ v0 > │ > │ > │ and method2 () : > string = > │ > │ > │ let v0 : string > = "" > │ > │ > │ v0 > │ > │ > │ and closure0 (v0 : > Mut0, v1 : string) () > │ > : unit = > │ > │ > │ let v2 : string > = v0.l0 > │ > │ > │ let v4 : string > = v2 + v1 > │ > │ > │ v0.l0 <- v4 > │ > │ > │ () > │ > │ > │ and closure1 (v0 : > string) () : unit = > │ > │ > │ let v1 : > (string -> unit) = > │ > System.Console.WriteLine > │ > │ > │ v1 v0 > │ > │ > │ and method0 () : > unit = > │ > │ > │ let v0 : string > = "I" > │ > │ > │ let v1 : string > = "S" > │ > │ > │ let v2 : string > = "T" > │ > │ > │ let v3 : string > = "J" > │ > │ > │ let v4 : string > = > │ > $"{v0}{v1}{v2}{v3}" > │ > │ > │ let v5 : string > = "F" > │ > │ > │ let v6 : string > = > │ > $"{v0}{v1}{v5}{v3}" > │ > │ > │ let v7 : string > = "N" > │ > │ > │ let v8 : string > = > │ > $"{v0}{v7}{v5}{v3}" > │ > │ > │ let v9 : string > = > │ > $"{v0}{v7}{v2}{v3}" > │ > │ > │ let v10 : > string = "P" > │ > │ > │ let v11 : > string = > │ > $"{v0}{v1}{v2}{v10}" > │ > │ > │ let v12 : > string = > │ > $"{v0}{v1}{v5}{v10}" > │ > │ > │ let v13 : > string = > │ > $"{v0}{v7}{v5}{v10}" > │ > │ > │ let v14 : > string = > │ > $"{v0}{v7}{v2}{v10}" > │ > │ > │ let v15 : > string = "E" > │ > │ > │ let v16 : > string = > │ > $"{v15}{v1}{v2}{v10}" > │ > │ > │ let v17 : > string = > │ > $"{v15}{v1}{v5}{v10}" > │ > │ > │ let v18 : > string = > │ > $"{v15}{v7}{v5}{v10}" > │ > │ > │ let v19 : > string = > │ > $"{v15}{v7}{v2}{v10}" > │ > │ > │ let v20 : > string = > │ > $"{v15}{v1}{v2}{v3}" > │ > │ > │ let v21 : > string = > │ > $"{v15}{v1}{v5}{v3}" > │ > │ > │ let v22 : > string = > │ > $"{v15}{v7}{v5}{v3}" > │ > │ > │ let v23 : > string = > │ > $"{v15}{v7}{v2}{v3}" > │ > │ > │ let v24 : > string list = [] > │ > │ > │ let v26 : > string list = v23 :: v24 > │ > │ > │ let v30 : > string list = v22 :: v26 > │ > │ > │ let v34 : > string list = v21 :: v30 > │ > │ > │ let v38 : > string list = v20 :: v34 > │ > │ > │ let v42 : > string list = v19 :: v38 > │ > │ > │ let v46 : > string list = v18 :: v42 > │ > │ > │ let v50 : > string list = v17 :: v46 > │ > │ > │ let v54 : > string list = v16 :: v50 > │ > │ > │ let v58 : > string list = v14 :: v54 > │ > │ > │ let v62 : > string list = v13 :: v58 > │ > │ > │ let v66 : > string list = v12 :: v62 > │ > │ > │ let v70 : > string list = v11 :: v66 > │ > │ > │ let v74 : > string list = v9 :: v70 > │ > │ > │ let v78 : > string list = v8 :: v74 > │ > │ > │ let v82 : > string list = v6 :: v78 > │ > │ > │ let v86 : > string list = v4 :: v82 > │ > │ > │ let v90 : > (string list -> (string > │ > [])) = List.toArray > │ > │ > │ let v91 : > (string []) = v90 v86 > │ > │ > │ let v94 : > string = "ISTJ" > │ > │ > │ let v95 : > string = "ISFJ" > │ > │ > │ let v96 : > string = "INFJ" > │ > │ > │ let v97 : > string = "INTJ" > │ > │ > │ let v98 : > string = "ISTP" > │ > │ > │ let v99 : > string = "ISFP" > │ > │ > │ let v100 : > string = "INFP" > │ > │ > │ let v101 : > string = "INTP" > │ > │ > │ let v102 : > string = "ESTP" > │ > │ > │ let v103 : > string = "ESFP" > │ > │ > │ let v104 : > string = "ENFP" > │ > │ > │ let v105 : > string = "ENTP" > │ > │ > │ let v106 : > string = "ESTJ" > │ > │ > │ let v107 : > string = "ESFJ" > │ > │ > │ let v108 : > string = "ENFJ" > │ > │ > │ let v109 : > string = "ENTJ" > │ > │ > │ let v110 : > (string []) = [|v94; v95; > │ > v96; v97; v98; v99; > │ > │ > v100; v101; v102; v103; v104; v105; > v106; v107; v108; > │ > v109|] > │ > │ > │ let v112 : bool > = v91 = v110 > │ > │ > │ let v116 : bool > = > │ > │ > │ if v112 > then > │ > │ > │ true > │ > │ > │ else > │ > │ > │ > method1(v112) > │ > │ > │ let v117 : > string = method2() > │ > │ > │ let v118 : Mut0 > = {l0 = v117} : Mut0 > │ > │ > │ let v121 : > string = "{ " > │ > │ > │ let v122 : > string = $"{v121}" > │ > │ > │ let v130 : unit > = () > │ > │ > │ let v131 : > (unit -> unit) = > │ > closure0(v118, v122) > │ > │ > │ let v132 : unit > = (fun () -> v131 > │ > (); v130) () > │ > │ > │ let v140 : > string = "name" > │ > │ > │ let v141 : > string = $"{v140}" > │ > │ > │ let v149 : unit > = () > │ > │ > │ let v150 : > (unit -> unit) = > │ > closure0(v118, v141) > │ > │ > │ let v151 : unit > = (fun () -> v150 > │ > (); v149) () > │ > │ > │ let v159 : > string = " = " > │ > │ > │ let v160 : > string = $"{v159}" > │ > │ > │ let v168 : unit > = () > │ > │ > │ let v169 : > (unit -> unit) = > │ > closure0(v118, v160) > │ > │ > │ let v170 : unit > = (fun () -> v169 > │ > (); v168) () > │ > │ > │ let v178 : > string = "__assert_eq'" > │ > │ > │ let v179 : > string = $"{v178}" > │ > │ > │ let v187 : unit > = () > │ > │ > │ let v188 : > (unit -> unit) = > │ > closure0(v118, v179) > │ > │ > │ let v189 : unit > = (fun () -> v188 > │ > (); v187) () > │ > │ > │ let v197 : > string = "; " > │ > │ > │ let v198 : > string = $"{v197}" > │ > │ > │ let v206 : unit > = () > │ > │ > │ let v207 : > (unit -> unit) = > │ > closure0(v118, v198) > │ > │ > │ let v208 : unit > = (fun () -> v207 > │ > (); v206) () > │ > │ > │ let v216 : > string = "actual" > │ > │ > │ let v217 : > string = $"{v216}" > │ > │ > │ let v225 : unit > = () > │ > │ > │ let v226 : > (unit -> unit) = > │ > closure0(v118, v217) > │ > │ > │ let v227 : unit > = (fun () -> v226 > │ > (); v225) () > │ > │ > │ let v234 : > string = $"{v159}" > │ > │ > │ let v242 : unit > = () > │ > │ > │ let v243 : > (unit -> unit) = > │ > closure0(v118, v234) > │ > │ > │ let v244 : unit > = (fun () -> v243 > │ > (); v242) () > │ > │ > │ let v251 : > string = $"%A{v91}" > │ > │ > │ let v255 : > string = $"{v251}" > │ > │ > │ let v263 : unit > = () > │ > │ > │ let v264 : > (unit -> unit) = > │ > closure0(v118, v255) > │ > │ > │ let v265 : unit > = (fun () -> v264 > │ > (); v263) () > │ > │ > │ let v272 : > string = $"{v197}" > │ > │ > │ let v280 : unit > = () > │ > │ > │ let v281 : > (unit -> unit) = > │ > closure0(v118, v272) > │ > │ > │ let v282 : unit > = (fun () -> v281 > │ > (); v280) () > │ > │ > │ let v290 : > string = "expected" > │ > │ > │ let v291 : > string = $"{v290}" > │ > │ > │ let v299 : unit > = () > │ > │ > │ let v300 : > (unit -> unit) = > │ > closure0(v118, v291) > │ > │ > │ let v301 : unit > = (fun () -> v300 > │ > (); v299) () > │ > │ > │ let v308 : > string = $"{v159}" > │ > │ > │ let v316 : unit > = () > │ > │ > │ let v317 : > (unit -> unit) = > │ > closure0(v118, v308) > │ > │ > │ let v318 : unit > = (fun () -> v317 > │ > (); v316) () > │ > │ > │ let v325 : > string = $"%A{v110}" > │ > │ > │ let v329 : > string = $"{v325}" > │ > │ > │ let v337 : unit > = () > │ > │ > │ let v338 : > (unit -> unit) = > │ > closure0(v118, v329) > │ > │ > │ let v339 : unit > = (fun () -> v338 > │ > (); v337) () > │ > │ > │ let v347 : > string = " }" > │ > │ > │ let v348 : > string = $"{v347}" > │ > │ > │ let v356 : unit > = () > │ > │ > │ let v357 : > (unit -> unit) = > │ > closure0(v118, v348) > │ > │ > │ let v358 : unit > = (fun () -> v357 > │ > (); v356) () > │ > │ > │ let v364 : > string = v118.l0 > │ > │ > │ let v366 : unit > = () > │ > │ > │ let v367 : > (unit -> unit) = > │ > closure1(v364) > │ > │ > │ let v368 : unit > = (fun () -> v367 > │ > (); v366) () > │ > │ > │ let v370 : bool > = v116 = false > │ > │ > │ if v370 then > │ > │ > │ > failwith<unit> v364 > │ > │ > │ method0() > │ > │ > │ > │ > │ > │ { name = > __assert_eq'; actual = > │ > [|"ISTJ"; "ISFJ"; "INFJ"; > │ > │ > "INTJ"; "ISTP"; "ISFP"; "INFP"; > "INTP"; "ESTP"; "ESFP"; > │ > │ > │ "ENFP"; "ENTP"; > "ESTJ"; "ESFJ"; > │ > "ENFJ"; "ENTJ"|]; expected > │ > │ > = [|"ISTJ"; "ISFJ"; "INFJ"; "INTJ"; > "ISTP"; "ISFP"; "INFP"; > │ > "INTP"; "ESTP"; > │ > │ > "ESFP"; > │ > │ > │ "ENFP"; "ENTP"; > "ESTJ"; "ESFJ"; > │ > "ENFJ"; "ENTJ"|] } > │ > │ > │ > │ > │ > > │ > │ > ── fsharp > │ > > ────────────────────────────────────────────────────────────────────── > │ > │ > type PhonologicalFeature = > │ > │ > | VowelFeature of > │ > │ > height: Height > │ > │ > * backness: Backness > │ > │ > * roundedness: Roundedness > │ > │ > * tone: Option<Tone> > │ > │ > * stress: Option<Stress> > │ > │ > * length: Option<Length> > │ > │ > | ConsonantFeature of > │ > │ > place: PlaceOfArticulation > │ > │ > * manner: MannerOfArticulation > │ > │ > * voicing: Voicing > │ > │ > * length: Option<Length> > │ > │ > | VowelHarmonyFeature > │ > │ > | PitchAccentFeature > │ > │ > > │ > │ > and Stress = Primary | Secondary > │ > │ > and Length = Long | Short | HalfLong > │ > │ > > │ > │ > and Height = > │ > │ > | High | NearHigh | HighMid > │ > │ > | Mid | LowMid | NearLow > │ > │ > | Low > │ > │ > > │ > │ > and Backness = Front | Central | Back > │ > │ > > │ > │ > and Roundedness = Rounded | Unrounded > │ > │ > > │ > │ > and PlaceOfArticulation = > │ > │ > | Bilabial | Labiodental | Dental > │ > │ > | Alveolar | Postalveolar | > Retroflex > │ > │ > | Palatal | Velar | Uvular > │ > │ > | Pharyngeal | Epiglottal | > Glottal > │ > │ > > │ > │ > and MannerOfArticulation = > │ > │ > | Plosive | Nasal | Trill > │ > │ > | TapOrFlap | Fricative | > LateralFricative > │ > │ > | Approximant | LateralApproximant > │ > │ > > │ > │ > and Voicing = Voiced | Voiceless > │ > │ > > │ > │ > and SecondaryArticulation = > │ > │ > | Labialization | Palatalization | > Velarization > │ > │ > | Pharyngealization | Aspiration > │ > │ > > │ > │ > and Tone = > │ > │ > | LevelTone of int > │ > │ > | ContourTone of int list > │ > │ > > │ > │ > and MorphologicalFeature = > │ > │ > | RootFeature of string > │ > │ > | AffixFeature of AffixType * > string > │ > │ > | IncorporationFeature of string * > MorphologicalFeature > │ > │ > | NonConcatenativePattern of > string * string > │ > │ > | AgglutinativeAffixFeature of > AgglutinativeAffixType * > │ > string > │ > │ > | HonorificFeature of > HonorificType * string > │ > │ > > │ > │ > and AgglutinativeAffixType = Suffix | > Prefix > │ > │ > > │ > │ > and HonorificType = VerbHonorific | > NounHonorific > │ > │ > > │ > │ > and AffixType = > │ > │ > | Prefix | Suffix | Infix > │ > │ > | Circumfix > │ > │ > > │ > │ > type SyntacticFeature = > │ > │ > | WordFeature of > MorphologicalFeature list * > │ > LexicalCategory > │ > │ > | PhraseFeature of PhraseType * > SyntacticFeature list > │ > │ > | GrammaticalRelation of > GrammaticalRelationType * > │ > SyntacticFeature list > │ > │ > | SOVOrderFeature > │ > │ > | TopicCommentFeature > │ > │ > > │ > │ > and GrammaticalRelationType = > │ > │ > | Ergative | Absolutive | > Nominative > │ > │ > | Accusative > │ > │ > > │ > │ > and LexicalCategory = > │ > │ > | Noun | Verb | Adjective > │ > │ > | Adverb | Pronoun | Preposition > │ > │ > | Conjunction | Determiner | > Interjection > │ > │ > > │ > │ > and PhraseType = > │ > │ > | NP | VP | AP > │ > │ > | PP | CP > │ > │ > > │ > │ > and SemanticFeature = > │ > │ > | Meaning of string > │ > │ > | SemanticRole of SemanticRoleType > * SemanticFeature > │ > │ > > │ > │ > and SemanticRoleType = > │ > │ > | Agent | Patient | Instrument > │ > │ > | Location | Time | Cause > │ > │ > > │ > │ > and PragmaticFeature = > │ > │ > | UseContext of string > │ > │ > | PolitenessLevel of Politeness > │ > │ > | SpeechAct of SpeechActType > │ > │ > | SpeechLevel of SpeechLevelType > │ > │ > > │ > │ > and Politeness = Formal | Informal | > Neutral > │ > │ > > │ > │ > and SpeechActType = > │ > │ > | Assertive | Directive | > Commissive > │ > │ > | Expressive | Declarative > │ > │ > > │ > │ > and SpeechLevelType = > │ > │ > | FormalHigh | FormalLow | > InformalHigh > │ > │ > | InformalLow | Neutral > │ > │ > > │ > │ > type LinguisticFeature = > │ > │ > | Phonological of > PhonologicalFeature > │ > │ > | Morphological of > MorphologicalFeature > │ > │ > | Syntactic of SyntacticFeature > │ > │ > | Semantic of SemanticFeature > │ > │ > | Pragmatic of PragmaticFeature > │ > │ > > │ > │ > type LanguageConstruct = > │ > │ > | LanguageElement of > LinguisticFeature > │ > │ > | LanguageStructure of > LanguageConstruct list > │ > │ > | TranslationElement of > TranslationFeature > │ > │ > > │ > │ > and TranslationFeature = > │ > │ > | LinkedPhonological of > PhonologicalFeature * > │ > PhonologicalFeature > │ > │ > | LinkedMorphological of > MorphologicalFeature * > │ > MorphologicalFeature > │ > │ > | LinkedSyntactic of > SyntacticFeature * > │ > SyntacticFeature > │ > │ > | LinkedSemantic of > SemanticFeature * SemanticFeature > │ > │ > > │ > │ > type Discourse = DiscourseUnit of > LanguageConstruct list > │ > │ > > │ > │ > type LanguageModel = > │ > │ > | Model of discourse: Discourse > │ > │ > > │ > │ > ── fsharp > │ > > ────────────────────────────────────────────────────────────────────── > │ > │ > let testEnglish = > │ > │ > Model( > │ > │ > DiscourseUnit [[ > │ > │ > LanguageElement > (Phonological (ConsonantFeature > │ > (Alveolar, Nasal, > │ > │ > Voiced, Some(HalfLong)))); > │ > │ > LanguageElement > (Phonological (VowelFeature > │ > (High, Front, Unrounded, > │ > │ > Some(LevelTone 1), Some(Primary), > Some(Short)))); > │ > │ > LanguageElement > (Phonological (VowelFeature > │ > (Low, Front, Unrounded, > │ > │ > Some(LevelTone 2), Some(Secondary), > Some(Long)))); > │ > │ > LanguageElement > (Phonological (ConsonantFeature > │ > (Velar, Plosive, > │ > │ > Voiceless, Some(HalfLong)))); > │ > │ > LanguageElement > (Morphological (RootFeature > │ > "I")); > │ > │ > LanguageElement > (Morphological (RootFeature > │ > "see")); > │ > │ > LanguageElement > (Morphological (RootFeature > │ > "a")); > │ > │ > LanguageElement > (Morphological (RootFeature > │ > "cat")); > │ > │ > LanguageElement (Syntactic > (PhraseFeature (NP, > │ > [[WordFeature > │ > │ > ([[RootFeature "I"]], Pronoun)]]))); > │ > │ > LanguageElement (Syntactic > (PhraseFeature (VP, > │ > [[WordFeature > │ > │ > ([[RootFeature "see"]], Verb)]]))); > │ > │ > LanguageElement (Syntactic > (PhraseFeature (NP, > │ > [[WordFeature > │ > │ > ([[RootFeature "a"; RootFeature > "cat"]], Noun)]]))); > │ > │ > LanguageElement (Semantic > (Meaning "Perception > │ > act of a feline by > │ > │ > the speaker")); > │ > │ > LanguageElement (Pragmatic > (UseContext > │ > "Statement of an action being > │ > │ > observed")) > │ > │ > ]] > │ > │ > ) > │ > │ > > │ > │ > let testPortuguese = > │ > │ > Model( > │ > │ > DiscourseUnit [[ > │ > │ > LanguageElement > (Phonological (VowelFeature > │ > (High, Front, Unrounded, > │ > │ > Some(LevelTone 1), Some(Primary), > Some(Short)))); > │ > │ > LanguageElement > (Phonological (VowelFeature > │ > (Low, Front, Unrounded, > │ > │ > Some(LevelTone 2), Some(Secondary), > Some(Long)))); > │ > │ > LanguageElement > (Phonological (VowelFeature > │ > (Mid, Back, Rounded, > │ > │ > Some(LevelTone 3), Some(Primary), > Some(Short)))); > │ > │ > LanguageElement > (Phonological (ConsonantFeature > │ > (Velar, Plosive, > │ > │ > Voiceless, Some(HalfLong)))); > │ > │ > LanguageElement > (Morphological (RootFeature > │ > "Eu")); > │ > │ > LanguageElement > (Morphological (RootFeature > │ > "ver" |> ignore; > │ > │ > AffixFeature (Suffix, "o"))); > │ > │ > LanguageElement > (Morphological (RootFeature > │ > "um")); > │ > │ > LanguageElement > (Morphological (RootFeature > │ > "gato")); > │ > │ > LanguageElement (Syntactic > (PhraseFeature (NP, > │ > [[WordFeature > │ > │ > ([[RootFeature "Eu"]], Pronoun)]]))); > │ > │ > LanguageElement (Syntactic > (PhraseFeature (VP, > │ > [[WordFeature > │ > │ > ([[RootFeature "vejo"]], Verb)]]))); > │ > │ > LanguageElement (Syntactic > (PhraseFeature (NP, > │ > [[WordFeature > │ > │ > ([[RootFeature "um"; RootFeature > "gato"]], Noun)]]))); > │ > │ > LanguageElement (Semantic > (Meaning "Ação de > │ > percepção de um felino > │ > │ > pelo falante")); > │ > │ > LanguageElement (Pragmatic > (UseContext > │ > "Declaração de uma ação sendo > │ > │ > observada")) > │ > │ > ]] > │ > │ > ) > │ > │ > > │ > │ > let testKorean = > │ > │ > Model( > │ > │ > DiscourseUnit [[ > │ > │ > LanguageElement > (Phonological (ConsonantFeature > │ > (Alveolar, Nasal, > │ > │ > Voiced, Some(Short)))); > │ > │ > LanguageElement > (Phonological (VowelFeature > │ > (High, Back, Rounded, > │ > │ > None, None, Some(Short)))); > │ > │ > LanguageElement > (Phonological (VowelFeature > │ > (Mid, Front, Unrounded, > │ > │ > None, None, Some(Long)))); > │ > │ > LanguageElement > (Phonological (ConsonantFeature > │ > (Bilabial, Plosive, > │ > │ > Voiceless, Some(Short)))); > │ > │ > LanguageElement > (Morphological (RootFeature > │ > "나")); > │ > │ > LanguageElement > (Morphological (RootFeature > │ > "보다")); > │ > │ > LanguageElement > (Morphological (AffixFeature > │ > (Suffix, "아"))); > │ > │ > LanguageElement > (Morphological (RootFeature > │ > "고양이")); > │ > │ > LanguageElement (Syntactic > (PhraseFeature (NP, > │ > [[WordFeature > │ > │ > ([[RootFeature "나"]], Pronoun)]]))); > │ > │ > LanguageElement (Syntactic > (PhraseFeature (VP, > │ > [[WordFeature > │ > │ > ([[RootFeature "보다"; AffixFeature > (Suffix, "아")]], > │ > Verb)]]))); > │ > │ > LanguageElement (Syntactic > (PhraseFeature (NP, > │ > [[WordFeature > │ > │ > ([[RootFeature "고양이"]], Noun)]]))); > │ > │ > LanguageElement (Semantic > (Meaning "화자에 의한 > │ > 고양이의 관찰 > │ > │ > 행위")); > │ > │ > LanguageElement (Pragmatic > (UseContext > │ > "관찰되고 있는 행동의 진술")) > │ > │ > ]] > │ > │ > ) > │ > │ > > │ > │ > ── markdown > │ > > ──────────────────────────────────────────────────────────────────── > │ > │ > │ ## main > │ > │ > > │ > │ > ── spiral > │ > > ────────────────────────────────────────────────────────────────────── > │ > │ > inl main (_args : array_base string) = > │ > │ > 0i32 > │ > │ > > │ > │ > inl main () = > │ > │ > $'let main args = !main args' : () > │ > │ > > │ > │ > ── spiral > │ > > ────────────────────────────────────────────────────────────────────── > │ > │ > inl app () = > │ > │ > "test" |> console.write_line > │ > │ > 0i32 > │ > │ > > │ > │ > inl main () = > │ > │ > print_static "<test>" > │ > │ > > │ > │ > app > │ > │ > |> dyn > │ > │ > |> ignore > │ > │ > > │ > │ > print_static "</test>" > │ > │ 00:00:13 v #3 > runtime.execute_with_options / result / { > │ > exit_code = 0; std_trace_length = 40093 } > │ > │ 00:00:13 d #4 > runtime.execute_with_options / { > │ > file_name = jupyter; arguments = ["nbconvert", > │ > > "c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb", "--to", "html", > │ > "--HTMLExporter.theme=dark"]; options = { command = jupyter > nbconvert > │ > "c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb" > --to html > │ > --HTMLExporter.theme=dark; cancellation_token = None; > environment_variables = > │ > Array(MutCell([])); on_line = None; stdin = None; trace = > true; > │ > working_directory = None } } > │ > │ 00:00:14 v #5 ! [NbConvertApp] > Converting notebook > │ > c:/home/git/polyglot/apps/spiral/temp/test/test.dib.ipynb > to html > │ > │ 00:00:14 v #6 ! > │ > > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > │ > py:96: MissingIDFieldWarning: Cell is missing an id field, > this will become a > │ > hard error in future nbformat versions. You may want to use > `normalize()` on > │ > your notebooks before validations (available since nbformat > 5.1.4). Previous > │ > versions of nbformat are fixing this issue transparently, > and will stop doing so > │ > in the future. > │ > │ 00:00:14 v #7 ! validate(nb) > │ > │ 00:00:15 v #8 ! > │ > > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > │ > highlight.py:71: UserWarning: IPython3 lexer unavailable, > falling back on Python > │ > 3 > │ > │ 00:00:15 v #9 ! return > _pygments_highlight( > │ > │ 00:00:15 v #10 ! [NbConvertApp] > Writing 341058 bytes to > │ > c:\home\git\polyglot\apps\spiral\temp\test\test.dib.html > │ > │ 00:00:15 v #11 > runtime.execute_with_options / result / > │ > { exit_code = 0; std_trace_length = 872 } > │ > │ 00:00:15 d #12 spiral.run / dib / > jupyter nbconvert / { > │ > exit_code = 0; jupyter_result_length = 872 } > │ > │ 00:00:15 d #13 > runtime.execute_with_options / { > │ > file_name = pwsh; arguments = ["-c", "$counter = 1; $path =│ > 'c:/home/git/polyglot/apps/spiral/temp/test/test.dib.html'; > (Get-Content $path > │ > -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { > $_.Groups[1].Value + > │ > $counter++ } | Set-Content $path"]; options = { command = > pwsh -c "$counter = 1; > │ > $path = > 'c:/home/git/polyglot/apps/spiral/temp/test/test.dib.html'; (Get-Content > │ > $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { > $_.Groups[1].Value + > │ > $counter++ } | Set-Content $path"; cancellation_token = > None; > │ > environment_variables = Array(MutCell([])); on_line = None; > stdin = None; trace > │ > = true; working_directory = None } } > │ > │ 00:00:15 v #14 > runtime.execute_with_options / result / > │ > { exit_code = 0; std_trace_length = 0 } > │ > │ 00:00:15 d #15 spiral.run / dib / > html cell ids / { > │ > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ > │ 00:00:15 d #16 spiral.run / dib / > { exit_code = 0; > │ > result_length = 41024 } > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### parse the .dib file into .spi > format with dibparser > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > { . ../../../../apps/parser/dist/DibParser$(_exe) test.dib > spi } | Invoke-Block > │ > > │ > ── [ 452.95ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ 00:00:00 d #1 writeDibCode / > output: Spi / path: > │ > test.dib > │ > │ 00:00:00 d #2 parseDibCode / > output: Spi / file: > │ > test.dib > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### build .fsx file from .spi using > supervisor > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > { . ../../../../apps/spiral/dist/Supervisor$(_exe) > --build-file test.spi > │ > test.fsx } | Invoke-Block > │ > > │ > ── [ 4.24s - stdout ] > ────────────────────────────────────────────────────────── > │ > │ <test> > │ > │ </test> > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## compile and format the project > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### compile project with fable > targeting optimized rust > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > dotnet fable --optimize --lang rs --extension .rs > │ > > │ > ── [ 5.54s - stdout ] > ────────────────────────────────────────────────────────── > │ > │ Fable 5.0.0-alpha.9: F# to Rust compiler > (status: alpha) > │ > │ > │ > │ Thanks to the contributor! > @kirill-gerasimenko > │ > │ Stand with Ukraine! > https://standwithukraine.com.ua/ > │ > │ > │ > │ Parsing test.fsproj... > │ > │ Project and references (1 source files) > parsed in 2889ms > │ > │ > │ > │ Started Fable compilation... > │ > │ > │ > │ Fable compilation finished in 1369ms > │ > │ > │ > │ .\test.fsx(11,0): (11,2) warning FABLE: > For Rust, support for > │ > F# static and module do bindings is disabled by default. It > can be enabled with > │ > the 'static_do_bindings' feature. Use at your own risk! > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### fix formatting issues in the .rs > file using regex and > │ > set-content > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > (Get-Content test.rs) ` > │ > -replace [[regex]]::Escape("),);"), "));" ` > │ > | FixRust ` > │ > | Set-Content test.rs > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### format the rust code using cargo > fmt > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > cargo fmt -- > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## build and test the project > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### build the project in release mode > using nightly rust > │ > compiler > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > cargo build --release > │ > > │ > ── [ 7.25s - stdout ] > ────────────────────────────────────────────────────────── > │ > │ warning: > C:\home\git\polyglot\workspace\Cargo.toml: the > │ > cargo feature `edition2024` has been stabilized in the 1.85 > release and is no > │ > longer necessary to be listed in the manifest > │ > │ See > │ > > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > │ > d for more information about using this feature. > │ > │ warning: > │ > C:\home\git\polyglot\apps\chat\contract\Cargo.toml: the > cargo feature > │ > `edition2024` has been stabilized in the 1.85 release and > is no longer necessary > │ > to be listed in the manifest > │ > │ See > │ > > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > │ > d for more information about using this feature. > │ > │ warning: > C:\home\git\polyglot\apps\plot\Cargo.toml: the > │ > cargo feature `edition2024` has been stabilized in the 1.85 > release and is no > │ > longer necessary to be listed in the manifest > │ > │ See > │ > > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > │ > d for more information about using this feature. > │ > │ warning: > │ > C:\home\git\polyglot\examples\rust\exercism\Cargo.toml: the > cargo feature > │ > `edition2024` has been stabilized in the 1.85 release and > is no longer necessary > │ > to be listed in the manifest > │ > │ See > │ > > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > │ > d for more information about using this feature. > │ > │ warning: > │ > C:\home\git\polyglot\apps\spiral\temp\extension\Cargo.toml: > the cargo feature > │ > `edition2024` has been stabilized in the 1.85 release and > is no longer necessary > │ > to be listed in the manifest > │ > │ See > │ > > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > │ > d for more information about using this feature. > │ > │ warning: > │ > C:\home\git\polyglot\apps\spiral\temp\cube\Cargo.toml: the > cargo feature > │ > `edition2024` has been stabilized in the 1.85 release and > is no longer necessary > │ > to be listed in the manifest > │ > │ See > │ > > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > │ > d for more information about using this feature. > │ > │ warning: > │ > C:\home\git\polyglot\apps\spiral\temp\test\Cargo.toml: the > cargo feature > │ > `edition2024` has been stabilized in the 1.85 release and > is no longer necessary > │ > to be listed in the manifest > │ > │ See > │ > > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > │ > d for more information about using this feature. > │ > │ warning: > │ > C:\home\git\polyglot\apps\chat\contract\tests\Cargo.toml: > the cargo feature > │ > `edition2024` has been stabilized in the 1.85 release and > is no longer necessary > │ > to be listed in the manifest > │ > │ See > │ > > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > │ > d for more information about using this feature. > │ > │ warning: > C:\home\git\polyglot\lib\math\Cargo.toml: the > │ > cargo feature `edition2024` has been stabilized in the 1.85 > release and is no > │ > longer necessary to be listed in the manifest > │ > │ See > │ > > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > │ > d for more information about using this feature. > │ > │ Compiling fable_library_rust > v0.1.0 > │ > > (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust) > │ > │ Compiling spiral_temp_test > v0.0.1 > │ > (C:\home\git\polyglot\apps\spiral\temp\test) > │ > │ Finished `release` profile > [optimized] target(s) in > │ > 7.18s > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### run release tests with output > enabled > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > { cargo test --release -- --show-output } | Invoke-Block > │ > > │ > ── [ 19.61s - stdout ] > ───────────────────────────────────────────────────────── > │ > │ warning: > C:\home\git\polyglot\lib\math\Cargo.toml: the > │ > cargo feature `edition2024` has been stabilized in the 1.85 > release and is no > │ > longer necessary to be listed in the manifest > │ > │ See > │ > > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > │ > d for more information about using this feature. > │ > │ warning: > │ > C:\home\git\polyglot\apps\chat\contract\tests\Cargo.toml: > the cargo feature > │ > `edition2024` has been stabilized in the 1.85 release and > is no longer necessary > │ > to be listed in the manifest > │ > │ See > │ > > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > │ > d for more information about using this feature. > │ > │ warning: > C:\home\git\polyglot\apps\plot\Cargo.toml: the > │ > cargo feature `edition2024` has been stabilized in the 1.85 > release and is no > │ > longer necessary to be listed in the manifest > │ > │ See > │ > > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > │ > d for more information about using this feature. > │ > │ warning: > │ > C:\home\git\polyglot\apps\spiral\temp\extension\Cargo.toml: > the cargo feature > │ > `edition2024` has been stabilized in the 1.85 release and > is no longer necessary > │ > to be listed in the manifest > │ > │ See > │ > > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > │ > d for more information about using this feature. > │ > │ warning: > │ > C:\home\git\polyglot\apps\spiral\temp\test\Cargo.toml: the > cargo feature > │ > `edition2024` has been stabilized in the 1.85 release and > is no longer necessary > │ > to be listed in the manifest > │ > │ See > │ > > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > │ > d for more information about using this feature. > │ > │ warning: > │ > C:\home\git\polyglot\apps\spiral\temp\cube\Cargo.toml: the > cargo feature > │ > `edition2024` has been stabilized in the 1.85 release and > is no longer necessary > │ > to be listed in the manifest > │ > │ See > │ > > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > │ > d for more information about using this feature. > │ > │ warning: > C:\home\git\polyglot\workspace\Cargo.toml: the > │ > cargo feature `edition2024` has been stabilized in the 1.85 > release and is no > │ > longer necessary to be listed in the manifest > │ > │ See > │ > > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > │ > d for more information about using this feature. > │ > │ warning: > │ > C:\home\git\polyglot\examples\rust\exercism\Cargo.toml: the > cargo feature > │ > `edition2024` has been stabilized in the 1.85 release and > is no longer necessary > │ > to be listed in the manifest > │ > │ See > │ > > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > │ > d for more information about using this feature. > │ > │ warning: > │ > C:\home\git\polyglot\apps\chat\contract\Cargo.toml: the > cargo feature > │ > `edition2024` has been stabilized in the 1.85 release and > is no longer necessary > │ > to be listed in the manifest > │ > │ See > │ > > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > │ > d for more information about using this feature. > │ > │ Compiling fable_library_rust > v0.1.0 > │ > > (C:\home\git\polyglot\lib\rust\fable\fable_modules\fable-library-rust) > │ > │ Compiling spiral_temp_test > v0.0.1 > │ > (C:\home\git\polyglot\apps\spiral\temp\test) > │ > │ Finished `release` profile > [optimized] target(s) in > │ > 19.41s > │ > │ Running unittests main.rs > │ > > (C:\home\git\polyglot\workspace\target\release\deps\spiral_temp_test-6f297c6a0c2 > │ > 32188.exe) > │ > │ > │ > │ running 3 tests > │ > │ test test_parse_number ... ok > │ > │ test prop_parse_format_idempotent ... ok > │ > │ test > │ > > adding_and_then_removing_an_item_from_the_cart_leaves_the_cart_unchanged ... ok > │ > │ > │ > │ successes: > │ > │ > │ > │ ---- prop_parse_format_idempotent stdout > ---- > │ > │ input=Comment("") > │ > │ input=Integer(-5491099299679688102) > │ > │ input=Integer(8379110228097664985) > │ > │ input=StringLiteral(")[3$9S:(&77h{i$x") > │ > │ input=Integer(-1634081358060128388) > │ > │ input=Comment("\"vjw/:Gd([") > │ > │ input=Integer(1181536584025437262) > │ > │ input=Comment("?c:.&dqU<'%X!") > │ > │ input=Operator("-") > │ > │ > input=Comment("?c,|Q9aOI@T%Dj`%{!zRQ0SsO8J{I|") > │ > │ input=StringLiteral("{%(Tg@.17Fy") > │ > │ input=Identifier("UwEp9Et1Qa") > │ > │ input=Identifier("zeWY2fIzAglMUOU") > │ > │ input=Comment("/A%I\"0lIa02/fq%I)") > │ > │ > input=StringLiteral("Y/P<$Em.{-HRDZ){MZ<<*S;2") > │ > │ > input=Comment("`0:br{nY.iD/\"S\\p\"u~%z") > │ > │ input=StringLiteral("km._%wW5") > │ > │ input=Operator("=") > │ > │ input=StringLiteral("{V?B/Ly3l*:N") > │ > │ input=Integer(-1787606027335244208) > │ > │ input=Comment("?;7X}/T.P*a%A\\(p*.U") > │ > │ input=Identifier("wTFtH0ii02AH4w89eQO") > │ > │ input=Operator("*") > │ > │ input=Identifier("ECFat7r3YxBjCCFm3E4M") > │ > │ input=Comment("+|{&?a&xNt.$2gu/3#V't") > │ > │ input=Operator("(") > │ > │ > input=StringLiteral("P>_=/V0`kl{!$nr/<(YzO&)y") > │ > │ input=Operator("+") > │ > │ input=Integer(-6753590660525902183) > │ > │ input=Identifier("r8pCylV6Wy0Q9") > │ > │ input=Identifier("FF64J6vtc3GrQ") > │ > │ input=Integer(-6751423457116678474) > │ > │ input=Comment(":u") > │ > │ input=Operator(")") > │ > │ input=Operator("+") > │ > │ input=StringLiteral("dx$X`pM`") > │ > │ input=Integer(383881523891696030) > │ > │ input=Integer(-8476708027339182419) > │ > │ input=Identifier("FcWbjW3u") > │ > │ input=Comment(".!5BC^2(*evx\"$/&}~k?9=") > │ > │ input=Comment("YE$O&!i%[{(-.$Q") > │ > │ input=Operator("=") > │ > │ input=Comment("+5*GK{%Bb$'t?{2:fLJ") > │ > │ input=Operator("-") > │ > │ > input=Comment("\"A%5!<|\\:6'VFv<\\{`?}|<5z`%") > │ > │ > input=StringLiteral("7Jz&{t.9Z?=ULi@Nw|%tX") > │ > │ input=Operator("/") > │ > │ input=Integer(1083988699152007875) > │ > │ input=Operator(")") > │ > │ input=StringLiteral("<=i%UN{s2{=O") > │ > │ input=Integer(-8574312478227516106) > │ > │ input=Comment("{XB'H-*%") > │ > │ input=Operator("=") > │ > │ input=Comment(">$={") > │ > │ input=Identifier("tvA6FNx4N9IG") > │ > │ input=Integer(-4315502924142066427) > │ > │ input=Operator("+") > │ > │ input=StringLiteral("/%=/Q<t=Wrh{<H4") > │ > │ input=Identifier("dgUqp0nM8LZ") > │ > │ input=Identifier("jonBMD0QKwzoMkVkotW2") > │ > │ input=Operator("*") > │ > │ input=Integer(6390662807139021902) > │ > │ input=Identifier("Bjwfl9NNcjPrzn") > │ > │ input=Integer(3696858319521255057) > │ > │ input=Operator("/") > │ > │ > input=StringLiteral("TcdjP3%T'11{9&{NDSs'&R}mFHl)") > │ > │ input=Integer(-6497922322790885730) > │ > │ input=StringLiteral("EX") > │ > │ > input=Identifier("FR4SwO16b9e7QT0XSW6jp2DTwdPzyri") > │ > │ input=Identifier("RmUTOc000CCQc2qKd3E") > │ > │ input=Integer(-7855364211559823524) > │ > │ > input=Identifier("ws2uWv09NRPQM8KTqGMpAydDmN") > │ > │ input=Operator("=") > │ > │ input=Integer(-6662301018828546960) > │ > │ > input=Identifier("q03H8prP17X10ItgMzKcQBYx9f") > │ > │ input=Integer(-4558059088402672219) > │ > │ input=Comment("/$3/=%%j$V/gOuu`\"") > │ > │ input=Comment("P~[4l\\5.{$)dkZ;ay$$%,o=. > NZm$&'e") > │ > │ input=StringLiteral("wo=Qn8v") > │ > │ input=Comment("/+?Dy'Fw") > │ > │ input=Integer(-1205046852755692529) > │ > │ > input=Comment("C{Pp1c`eL>R:Vs<TbXQ+\"]fFN") > │ > │ input=Operator("*") > │ > │ input=StringLiteral("~e!}Nga*v<{") > │ > │ > input=StringLiteral("I8_;.5?/<J%|El}K^VLg*`Z") > │ > │ input=Identifier("ahf87tpH7FkuPpsfU2W") > │ > │ input=StringLiteral("X!x>=10=s3") > │ > │ input=Operator("+") > │ > │ input=Comment("o#Qf") > │ > │ input=Operator("-") > │ > │ input=Comment("5AA") > │ > │ input=StringLiteral("*P{") > │ > │ input=Identifier("dc7") > │ > │ input=Operator("(") > │ > │ input=Integer(2808843462451926414) > │ > │ input=Comment(")?%~B\\`$<{{\\1sj'=") > │ > │ input=StringLiteral("Y`|Kh-") > │ > │ > input=StringLiteral("CdpfCC'Y**pSCi]Mq/@") > │ > │ input=Comment("\"c$") > │ > │ > input=StringLiteral("2G{$'!&=%VI<@o4{d`<MRL?RL$~") > │ > │ input=StringLiteral("v") > │ > │ input=Operator(")") > │ > │ input=StringLiteral("v}o(*HJ#F") > │ > │ input=Integer(5794123135866554476) > │ > │ input=Comment("{!y/8{htB5J8$2") > │ > │ input=Identifier("MMSC3zsOE26U55n") > │ > │ input=Integer(8564946316397897036) > │ > │ input=StringLiteral("n9$u[lcS<") > │ > │ input=Operator("(") > │ > │ > input=Comment("3TG<l%\"{wq=X9}Q?{LKGQ5/'@G?") > │ > │ input=Identifier("DS") > │ > │ > input=Comment("!C/P^TK.Z}$gGq{`$a6>Q[%.*Pc[J]7:") > │ > │ input=Identifier("m5Km07xtqhVUJn6N") > │ > │ input=Comment("fBb\"CVf,\"") > │ > │ input=Operator("(") > │ > │ input=Operator("+") > │ > │ input=Identifier("wkMbJerYohNtg") > │ > │ input=StringLiteral("Z_O/5:y*6A#*:") > │ > │ input=StringLiteral("'.d?BO41UF{+<;@&`") > │ > │ > input=Identifier("aFso34JldzD716RbUy0t1") > │ > │ input=Comment("r.hSC-y/<1l{qV`'8`4Z+cDB > $'?M%A") > │ > │ input=Identifier("GciS") > │ > │ input=Operator("=") > │ > │ > input=Identifier("TBYfbZn8xpQyd0vEawGOYI657F37rN2C") > │ > │ input=Identifier("Od4YAms87R") > │ > │ > input=Comment("52>c$9.*8:&J{hpNz\"%\\a*q]%wO/?1s\\") > │ > │ > input=Identifier("DB7rk7LyOss9vPV3ddJhR8Ej") > │ > │ input=Integer(7085578393077824465) > │ > │ input=Operator("*") > │ > │ input=Integer(4479787872611549978) > │ > │ input=Integer(-5624142405154604949) > │ > │ input=StringLiteral("=l#%E?s3:Ib'h > fJ<W}'(6/tI*") > │ > │ input=Operator("(") > │ > │ input=Operator("*") > │ > │ input=Operator("-") > │ > │ > input=Identifier("z34F3doRL2na1Z5X64ZtPCiuf2Bdr7uC2") > │ > │ input=Identifier("B6I8f2MIddu5or59Ba7") > │ > │ > input=Comment("T<WL~rQCsZ2AeXn\\KX@?{5<\"NOv") > │ > │ input=Operator("=") > │ > │ input=StringLiteral("qNOKh:,") > │ > │ input=Identifier("cs9JRk2njlKqVeBA44") > │ > │ input=Operator(")") > │ > │ input=Integer(-1045108911930306925) > │ > │ input=Identifier("b") > │ > │ > input=Identifier("b7eIjnkNRgP8pExqE23e6E92QJ1pbbCj") > │ > │ input=Identifier("yZ") > │ > │ > input=Identifier("zBuG1iPaA2KaALS5Qm2De") > │ > │ input=Integer(-1151736706829803094) > │ > │ input=Identifier("mnTBKb0lm8") > │ > │ input=Operator("+") > │ > │ input=Integer(3480085098081516547) > │ > │ input=Integer(710456899134220329) > │ > │ input=Operator("*") > │ > │ input=Identifier("J963PkInvd0mUc2YVM") > │ > │ input=Operator("=") > │ > │ input=Operator("+") > │ > │ input=Operator("*") > │ > │ input=Integer(8285586589749137320) > │ > │ input=Operator("+") > │ > │ input=Integer(9146946205557788321) > │ > │ input=Operator("/") > │ > │ input=Integer(7585435845461657286) > │ > │ input=Integer(-4718176019574950998) > │ > │ input=Integer(1035305392867467074) > │ > │ input=Integer(1272212486747247190) > │ > │ > input=Identifier("Ch0dTxK934vHU3jK18cRaFVH3DiK") > │ > │ input=StringLiteral(";/ > /j%AKO8Z]j8'AVHcj|L") > │ > │ input=Operator("-") > │ > │ input=Operator("=") > │ > │ input=StringLiteral("d5& ] !U") > │ > │ input=StringLiteral("!$^i-V*Xb~:l[)") > │ > │ input=Integer(-1338139748078479980) > │ > │ input=StringLiteral("e%v*t`'/0&G.-xGEBY] > ") > │ > │ input=StringLiteral("fXy'e") > │ > │ > input=Comment("iE%??:ZA.HJo3;4XZjH\"3$K$6.m") > │ > │ input=Integer(-6660815258355396822) > │ > │ input=Operator("(") > │ > │ input=Identifier("M3") > │ > │ input=Integer(-8022430024529498327) > │ > │ input=StringLiteral("=") > │ > │ input=Identifier("NiF3KIB18hpumyLY2K") > │ > │ input=Comment("\\kg.:yI?Mb-4{$$i&") > │ > │ > input=Comment("]J.T:U=3Ob%`3o>\"_vY?D5!&=>") > │ > │ input=Identifier("GA1") > │ > │ > input=StringLiteral("&M*U.k2'2F%3IvWb&aV%.H^l?f%a") > │ > │ input=Integer(12253634085365172) > │ > │ input=Identifier("O5P8rpkW") > │ > │ input=StringLiteral("&N{=&L/o;") > │ > │ input=StringLiteral("$[") > │ > │ input=Operator("/") > │ > │ input=Identifier("fJ1") > │ > │ input=Integer(-5484693271654579105) > │ > │ > input=Comment("YC.QG<O&[h`&pH'qk@.).?{S)%\\GAg0j") > │ > │ input=Comment("A40A1_lQ=95w/") > │ > │ input=Identifier("Bg6rVkdfKcF9ML7DC") > │ > │ > input=Identifier("QyVR30RRSCy1P48pCFvMZywTf4GAQ") > │ > │ > input=Comment("vr%V2<lul$Y<r%&<*W\\{}'?rc") > │ > │ > input=Comment("&C@qg:h=):yb'j;;{88/B.,'3_|4{E") > │ > │ > input=StringLiteral("d~i1*KZh@|~1,$/05;(%vq") > │ > │ input=Identifier("KT96M6G") > │ > │ input=Integer(-8387014486006015761) > │ > │ input=Identifier("YGj4sEXwSoXfi1") > │ > │ input=Comment("U_4i:~Us8n$d<") > │ > │ input=Comment("R%(&:z*-/E7X.]4&2{W") > │ > │ input=Operator(")") > │ > │ > input=StringLiteral("H`st|-S%G<d'o<`]x{'?jb%&6%aJ.") > │ > │ > input=Identifier("xY340AlU44qhH8spKqVepn") > │ > │ input=Operator("+") > │ > │ input=Comment("<Cscm^") > │ > │ > input=Comment("x8\"$'^%=&o$4.T%bgaPUy9`-{G<47`") > │ > │ > input=StringLiteral("l+S{{e0#5q3h$,o$fL$9Gm") > │ > │ input=Comment("") > │ > │ > input=Identifier("QGLuYuUZHg91iwogKHaxNDf") > │ > │ input=StringLiteral("/ > Mxl`<4oVq.A<e+pEkZ0v:4+L0") > │ > │ > input=Identifier("eDLkOl9h9a5pDEJ4JZttZgL8k0Q2F") > │ > │ input=Integer(5739147397538091196) > │ > │ input=Operator("+") > │ > │ input=Operator("(") > │ > │ input=Operator("/") > │ > │ input=StringLiteral("-&Pj/'") > │ > │ input=Operator("+") > │ > │ > input=StringLiteral("n'vJ6?:u=G-(e<[hkR!-_#3:?4^^") > │ > │ > input=Comment("4'+@/9f9<)4^<&&~=c:p{*{ac0!9ne") > │ > │ input=Operator("/") > │ > │ input=Identifier("eM7Z25") > │ > │ input=Operator("=") > │ > │ input=Integer(-7982922571252409179) > │ > │ > input=StringLiteral("B_kL{[a`6eM^@:[SE[IX=") > │ > │ input=Operator(")") > │ > │ input=Operator(")") > │ > │ input=StringLiteral("R") > │ > │ input=Identifier("I") > │ > │ input=Integer(-965005534850667641) > │ > │ input=StringLiteral(",i'l);KS^p^'") > │ > │ input=Identifier("cg1V7hKJ") > │ > │ input=Operator("(") > │ > │ input=Comment("z#\\=lNL$&$okwY") > │ > │ > input=StringLiteral("<>M0s`8d4@=*$}$x?T/w+l<]--$<") > │ > │ input=Operator("/") > │ > │ input=Comment("M\">z&M:4I^:Pu") > │ > │ input=Operator("+") > │ > │ input=Comment("pNSO45&)0tO\\e`^ > ]{4EU>6E<%$%*") > │ > │ input=Integer(-1695621145093210279) > │ > │ input=Operator("+") > │ > │ input=Integer(7883738429121975897) > │ > │ input=StringLiteral("ZX.($]'?]l?D") > │ > │ > input=StringLiteral("ty]^9&/%vGEY/OOV$^cK#}") > │ > │ > input=Comment("~&$8\"2~'<[:Y9.o\\L*5r\"S}{") > │ > │ input=Operator(")") > │ > │ input=StringLiteral(":M?Jn") > │ > │ input=Comment("Q?9.") > │ > │ input=Integer(7162419005757960625) > │ > │ > input=Comment("]4{\"B'NS4\\Z:Q$*.*#\\{'[S@jYO+v*6r") > │ > │ input=Operator("-") > │ > │ input=StringLiteral("1W(/<yja*") > │ > │ input=Operator("+") > │ > │ > │ > │ > │ > │ successes: > │ > │ > │ > > adding_and_then_removing_an_item_from_the_cart_leaves_the_cart_unchanged > │ > │ prop_parse_format_idempotent > │ > │ test_parse_number > │ > │ > │ > │ test result: ok. 3 passed; 0 failed; 0 > ignored; 0 measured; 0 > │ > filtered out; finished in 0.12s > │ > │ > │ > │ > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ### execute the binary in release mode > │ > > │ > ── pwsh > ──────────────────────────────────────────────────────────────────────── > │ > { . > $ScriptDir/../../../../workspace/target/release/spiral_temp_test$(_exe) } | > │ > Invoke-Block > │ > > │ > ── [ 20.36ms - stdout ] > ──────────────────────────────────────────────────────── > │ > │ app=test > │ > │ > │ 00:00:55 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 94833 } > │ 00:00:55 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb", "--to", "html", > "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert > "c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb" --to html > --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = > Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None } } > │ 00:00:56 v #5 ! [NbConvertApp] Converting notebook > c:/home/git/polyglot/apps/spiral/temp/test/build.dib.ipynb to html > │ 00:00:56 v #6 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__. > py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a > hard error in future nbformat versions. You may want to use `normalize()` on > your notebooks before validations (available since nbformat 5.1.4). Previous > versions of nbformat are fixing this issue transparently, and will stop doing so > in the future. > │ 00:00:56 v #7 ! validate(nb) > │ 00:00:57 v #8 ! > C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\ > highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python > 3 > │ 00:00:57 v #9 ! return _pygments_highlight( > │ 00:00:57 v #10 ! [NbConvertApp] Writing 373422 bytes to > c:\home\git\polyglot\apps\spiral\temp\test\build.dib.html > │ 00:00:57 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 874 } > │ 00:00:57 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 874 } > │ 00:00:57 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > 'c:/home/git/polyglot/apps/spiral/temp/test/build.dib.html'; (Get-Content $path > -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + > $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; > $path = 'c:/home/git/polyglot/apps/spiral/temp/test/build.dib.html'; > (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { > $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = > None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; > trace = true; working_directory = None } } > │ 00:00:58 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:00:58 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:00:58 d #16 spiral.run / dib / { exit_code = 0; > result_length = 95766 } > │ polyglot/scripts/core.ps1/GetFullPath / Path: ./build.py / > Location: C:\home\git\polyglot\apps\spiral\temp\blender / ResolvedLocation: > C:\home\git\polyglot\apps\spiral\temp\blender > │ polyglot/scripts/core.ps1/GetFullPath / FullPath: > C:\home\git\polyglot\apps\spiral\temp\blender\build.py > │ blender / Path: > C:\home\git\polyglot\apps\spiral\temp\blender\build.py > │ TBBmalloc: skip allocation functions replacement in > ucrtbase.dll: unknown prologue for function _aligned_free > │ Blender 4.4.0 (hash 05377985c527 built 2025-03-18 03:22:03) > │ Fra:1 Mem:10.15M (Peak 10.15M) | Time:00:00.00 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Synchronizing object | Cube > │ Fra:1 Mem:10.23M (Peak 10.23M) | Time:00:00.01 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Initializing > │ Fra:1 Mem:10.07M (Peak 10.23M) | Time:00:00.01 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Waiting for render to start > │ Fra:1 Mem:10.08M (Peak 10.23M) | Time:00:00.01 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Loading render kernels (may take a few minutes > the first time) > │ Fra:1 Mem:10.08M (Peak 10.23M) | Time:00:00.01 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Scene > │ Fra:1 Mem:10.08M (Peak 10.23M) | Time:00:00.01 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Shaders > │ Fra:1 Mem:10.16M (Peak 10.23M) | Time:00:00.01 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Procedurals > │ Fra:1 Mem:10.16M (Peak 10.23M) | Time:00:00.01 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Background > │ Fra:1 Mem:10.16M (Peak 10.23M) | Time:00:00.01 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Camera > │ Fra:1 Mem:10.16M (Peak 10.23M) | Time:00:00.01 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Meshes Flags > │ Fra:1 Mem:10.16M (Peak 10.23M) | Time:00:00.01 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Objects > │ Fra:1 Mem:10.16M (Peak 10.23M) | Time:00:00.01 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Objects | Copying Transformations to > device > │ Fra:1 Mem:10.16M (Peak 10.23M) | Time:00:00.01 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Objects | Applying Static > Transformations > │ Fra:1 Mem:10.16M (Peak 10.23M) | Time:00:00.01 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Particle Systems > │ Fra:1 Mem:10.16M (Peak 10.23M) | Time:00:00.01 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Particle Systems | Copying Particles to > device > │ Fra:1 Mem:10.16M (Peak 10.23M) | Time:00:00.01 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Meshes > │ Fra:1 Mem:10.17M (Peak 10.23M) | Time:00:00.01 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Mesh | Computing attributes > │ Fra:1 Mem:10.18M (Peak 10.23M) | Time:00:00.01 | Mem:0.00M, > Peak:0.00M | Scene, ViewLayer | Updating Mesh | Copying Attributes to device > │ Fra:1 Mem:10.18M (Peak 10.23M) | Time:00:00.01 | Mem:0.01M, > Peak:0.01M | Scene, ViewLayer | Updating Scene BVH | Building > │ Fra:1 Mem:10.18M (Peak 10.23M) | Time:00:00.01 | Mem:0.01M, > Peak:0.01M | Scene, ViewLayer | Updating Scene BVH | Building BVH > │ Fra:1 Mem:10.18M (Peak 10.23M) | Time:00:00.02 | Mem:0.04M, > Peak:0.04M | Scene, ViewLayer | Updating Scene BVH | Building BVH 0% > │ Fra:1 Mem:10.18M (Peak 10.23M) | Time:00:00.02 | Mem:0.07M, > Peak:0.10M | Scene, ViewLayer | Updating Scene BVH | Copying BVH to device > │ Fra:1 Mem:10.18M (Peak 10.23M) | Time:00:00.02 | Mem:0.07M, > Peak:0.10M | Scene, ViewLayer | Updating Mesh | Computing normals > │ Fra:1 Mem:10.21M (Peak 10.23M) | Time:00:00.02 | Mem:0.07M, > Peak:0.10M | Scene, ViewLayer | Updating Mesh | Copying Mesh to device > │ Fra:1 Mem:10.21M (Peak 10.23M) | Time:00:00.02 | Mem:0.11M, > Peak:0.11M | Scene, ViewLayer | Updating Objects Flags > │ Fra:1 Mem:10.21M (Peak 10.23M) | Time:00:00.02 | Mem:0.11M, > Peak:0.11M | Scene, ViewLayer | Updating Primitive Offsets > │ Fra:1 Mem:10.21M (Peak 10.23M) | Time:00:00.02 | Mem:0.11M, > Peak:0.11M | Scene, ViewLayer | Updating Images > │ Fra:1 Mem:10.21M (Peak 10.23M) | Time:00:00.02 | Mem:0.11M, > Peak:0.11M | Scene, ViewLayer | Updating Camera Volume > │ Fra:1 Mem:10.21M (Peak 10.23M) | Time:00:00.02 | Mem:0.11M, > Peak:0.11M | Scene, ViewLayer | Updating Lookup Tables > │ Fra:1 Mem:10.21M (Peak 10.23M) | Time:00:00.02 | Mem:0.19M, > Peak:0.19M | Scene, ViewLayer | Updating Lights > │ Fra:1 Mem:10.21M (Peak 10.23M) | Time:00:00.02 | Mem:0.19M, > Peak:0.19M | Scene, ViewLayer | Updating Lights | Computing tree > │ Fra:1 Mem:10.21M (Peak 10.23M) | Time:00:00.02 | Mem:0.19M, > Peak:0.19M | Scene, ViewLayer | Updating Integrator > │ Fra:1 Mem:10.21M (Peak 10.23M) | Time:00:00.02 | Mem:0.19M, > Peak:0.19M | Scene, ViewLayer | Updating Film > │ Fra:1 Mem:10.22M (Peak 10.23M) | Time:00:00.02 | Mem:0.11M, > Peak:0.19M | Scene, ViewLayer | Updating Lookup Tables > │ Fra:1 Mem:10.22M (Peak 10.23M) | Time:00:00.02 | Mem:0.19M, > Peak:0.19M | Scene, ViewLayer | Updating Baking > │ Fra:1 Mem:10.22M (Peak 10.23M) | Time:00:00.02 | Mem:0.19M, > Peak:0.19M | Scene, ViewLayer | Updating Device | Writing constant memory > │ Fra:1 Mem:10.22M (Peak 10.23M) | Time:00:00.02 | Mem:0.19M, > Peak:0.19M | Scene, ViewLayer | Loading denoising kernels (may take a few > minutes the first time) > │ Fra:1 Mem:10.22M (Peak 10.23M) | Time:00:00.02 | Mem:0.19M, > Peak:0.19M | Scene, ViewLayer | Sample 0/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:00.19 | > Remaining:11:38.70 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 1/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:11.87 | > Remaining:09:54.82 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 80/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:12.59 | > Remaining:08:43.91 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 96/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:13.30 | > Remaining:07:52.45 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 112/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:14.01 | > Remaining:07:13.75 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 128/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:14.70 | > Remaining:06:42.82 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 144/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:15.35 | > Remaining:06:17.14 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 160/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:16.01 | > Remaining:05:56.03 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 176/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:16.63 | > Remaining:05:37.81 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 192/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:17.23 | > Remaining:05:21.75 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 208/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:17.83 | > Remaining:05:07.91 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 224/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:18.41 | > Remaining:04:55.46 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 240/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:18.97 | > Remaining:04:44.24 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 256/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:19.52 | > Remaining:04:34.09 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 272/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:20.04 | > Remaining:04:24.71 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 288/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:20.63 | > Remaining:04:17.10 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 304/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:21.14 | > Remaining:04:09.15 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 320/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:21.64 | > Remaining:04:01.88 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 336/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:22.12 | > Remaining:03:55.02 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 352/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:22.59 | > Remaining:03:48.61 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 368/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:23.04 | > Remaining:03:42.52 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 384/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:23.55 | > Remaining:03:37.39 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 400/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:23.97 | > Remaining:03:31.89 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 416/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:24.40 | > Remaining:03:26.74 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 432/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:24.81 | > Remaining:03:21.82 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 448/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:25.21 | > Remaining:03:17.17 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 464/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:25.61 | > Remaining:03:12.77 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 480/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:26.00 | > Remaining:03:08.56 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 496/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:26.38 | > Remaining:03:04.50 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 512/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:26.75 | > Remaining:03:00.65 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 528/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:27.11 | > Remaining:02:56.90 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 544/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:27.48 | > Remaining:02:53.36 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 560/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:27.82 | > Remaining:02:49.90 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 576/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:28.17 | > Remaining:02:46.64 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 592/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:28.52 | > Remaining:02:43.51 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 608/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:28.86 | > Remaining:02:40.46 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 624/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:29.19 | > Remaining:02:37.49 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 640/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:29.51 | > Remaining:02:34.63 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 656/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:29.82 | > Remaining:02:31.83 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 672/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:30.14 | > Remaining:02:29.20 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 688/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:30.45 | > Remaining:02:26.60 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 704/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:30.75 | > Remaining:02:24.07 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 720/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:31.03 | > Remaining:02:21.57 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 736/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:31.41 | > Remaining:02:19.57 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 752/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:31.69 | > Remaining:02:17.21 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 768/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:31.96 | > Remaining:02:14.92 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 784/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:32.23 | > Remaining:02:12.69 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 800/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:32.50 | > Remaining:02:10.56 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 816/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:32.76 | > Remaining:02:08.45 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 832/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:33.02 | > Remaining:02:06.38 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 848/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:33.27 | > Remaining:02:04.37 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 864/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:33.55 | > Remaining:02:02.54 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 880/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:33.80 | > Remaining:02:00.63 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 896/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:34.05 | > Remaining:01:58.78 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 912/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:34.29 | > Remaining:01:56.97 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 928/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:34.52 | > Remaining:01:55.18 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 944/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:34.74 | > Remaining:01:53.42 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 960/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:34.96 | > Remaining:01:51.70 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 976/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:35.18 | > Remaining:01:50.01 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 992/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:35.40 | > Remaining:01:48.37 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1008/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:35.61 | > Remaining:01:46.76 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1024/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:35.82 | > Remaining:01:45.19 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1040/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:36.03 | > Remaining:01:43.65 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1056/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:36.23 | > Remaining:01:42.14 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1072/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:36.44 | > Remaining:01:40.67 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1088/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:36.63 | > Remaining:01:39.21 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1104/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:36.82 | > Remaining:01:37.79 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1120/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:37.02 | > Remaining:01:36.39 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1136/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:37.20 | > Remaining:01:35.01 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1152/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:37.39 | > Remaining:01:33.67 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1168/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:37.58 | > Remaining:01:32.37 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1184/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:37.76 | > Remaining:01:31.08 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1200/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:37.94 | > Remaining:01:29.80 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1216/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:38.11 | > Remaining:01:28.55 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1232/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:38.28 | > Remaining:01:27.31 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1248/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:38.46 | > Remaining:01:26.12 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1264/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:38.63 | > Remaining:01:24.94 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1280/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:38.80 | > Remaining:01:23.77 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1296/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:38.96 | > Remaining:01:22.62 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1312/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:39.13 | > Remaining:01:21.50 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1328/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:39.29 | > Remaining:01:20.40 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1344/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:39.45 | > Remaining:01:19.33 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1360/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:39.61 | > Remaining:01:18.26 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1376/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:39.77 | > Remaining:01:17.20 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1392/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:39.93 | > Remaining:01:16.18 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1408/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:40.08 | > Remaining:01:15.16 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1424/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:40.23 | > Remaining:01:14.15 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1440/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:40.38 | > Remaining:01:13.17 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1456/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:40.53 | > Remaining:01:12.21 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1472/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:40.67 | > Remaining:01:11.25 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1488/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:40.82 | > Remaining:01:10.30 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1504/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:40.96 | > Remaining:01:09.37 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1520/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:41.10 | > Remaining:01:08.46 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1536/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:41.23 | > Remaining:01:07.55 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1552/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:41.37 | > Remaining:01:06.67 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1568/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:41.52 | > Remaining:01:05.80 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1584/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:41.65 | > Remaining:01:04.94 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1600/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:41.79 | > Remaining:01:04.09 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1616/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:41.91 | > Remaining:01:03.25 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1632/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.04 | > Remaining:01:02.41 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1648/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.17 | > Remaining:01:01.59 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1664/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.29 | > Remaining:01:00.78 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1680/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.42 | > Remaining:00:59.99 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1696/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.54 | > Remaining:00:59.20 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1712/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.66 | > Remaining:00:58.42 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1728/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.78 | > Remaining:00:57.66 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1744/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:42.90 | > Remaining:00:56.90 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1760/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.01 | > Remaining:00:56.16 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1776/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.13 | > Remaining:00:55.42 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1792/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.25 | > Remaining:00:54.69 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1808/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.36 | > Remaining:00:53.98 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1824/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.48 | > Remaining:00:53.28 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1840/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.59 | > Remaining:00:52.58 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1856/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.71 | > Remaining:00:51.89 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1872/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.82 | > Remaining:00:51.22 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1888/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:43.92 | > Remaining:00:50.54 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1904/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.03 | > Remaining:00:49.87 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1920/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.13 | > Remaining:00:49.21 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1936/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.23 | > Remaining:00:48.56 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1952/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.34 | > Remaining:00:47.92 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1968/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.45 | > Remaining:00:47.29 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 1984/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.55 | > Remaining:00:46.66 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2000/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.65 | > Remaining:00:46.04 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2016/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.75 | > Remaining:00:45.42 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2032/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.84 | > Remaining:00:44.82 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2048/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:44.94 | > Remaining:00:44.22 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2064/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.04 | > Remaining:00:43.63 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2080/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.13 | > Remaining:00:43.04 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2096/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.23 | > Remaining:00:42.46 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2112/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.32 | > Remaining:00:41.89 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2128/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.42 | > Remaining:00:41.33 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2144/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.51 | > Remaining:00:40.76 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2160/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.59 | > Remaining:00:40.21 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2176/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.68 | > Remaining:00:39.66 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2192/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.77 | > Remaining:00:39.11 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2208/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.85 | > Remaining:00:38.57 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2224/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:45.94 | > Remaining:00:38.04 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2240/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.02 | > Remaining:00:37.51 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2256/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.10 | > Remaining:00:36.99 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2272/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.19 | > Remaining:00:36.48 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2288/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.27 | > Remaining:00:35.96 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2304/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.34 | > Remaining:00:35.46 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2320/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.43 | > Remaining:00:34.96 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2336/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.51 | > Remaining:00:34.47 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2352/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.59 | > Remaining:00:33.98 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2368/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.66 | > Remaining:00:33.49 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2384/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.74 | > Remaining:00:33.01 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2400/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.81 | > Remaining:00:32.53 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2416/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.89 | > Remaining:00:32.06 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2432/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:46.96 | > Remaining:00:31.60 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2448/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.03 | > Remaining:00:31.13 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2464/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.11 | > Remaining:00:30.68 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2480/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.18 | > Remaining:00:30.22 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2496/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.25 | > Remaining:00:29.78 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2512/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.32 | > Remaining:00:29.33 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2528/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.40 | > Remaining:00:28.90 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2544/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.47 | > Remaining:00:28.47 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2560/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.54 | > Remaining:00:28.04 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2576/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.61 | > Remaining:00:27.61 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2592/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.69 | > Remaining:00:27.19 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2608/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.76 | > Remaining:00:26.77 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2624/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.83 | > Remaining:00:26.36 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2640/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.89 | > Remaining:00:25.95 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2656/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:47.96 | > Remaining:00:25.55 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2672/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.03 | > Remaining:00:25.14 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2688/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.10 | > Remaining:00:24.74 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2704/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.16 | > Remaining:00:24.35 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2720/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.22 | > Remaining:00:23.95 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2736/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.29 | > Remaining:00:23.57 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2752/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.35 | > Remaining:00:23.18 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2768/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.43 | > Remaining:00:22.81 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2784/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.49 | > Remaining:00:22.43 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2800/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.56 | > Remaining:00:22.06 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2816/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.62 | > Remaining:00:21.68 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2832/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.68 | > Remaining:00:21.32 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2848/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.74 | > Remaining:00:20.95 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2864/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.81 | > Remaining:00:20.59 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2880/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.87 | > Remaining:00:20.23 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2896/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.92 | > Remaining:00:19.88 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2912/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:48.98 | > Remaining:00:19.53 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2928/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.04 | > Remaining:00:19.18 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2944/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.09 | > Remaining:00:18.83 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2960/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.14 | > Remaining:00:18.48 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2976/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.20 | > Remaining:00:18.14 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 2992/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.25 | > Remaining:00:17.80 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3008/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.30 | > Remaining:00:17.46 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3024/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.35 | > Remaining:00:17.13 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3040/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.41 | > Remaining:00:16.80 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3056/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.46 | > Remaining:00:16.48 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3072/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.51 | > Remaining:00:16.15 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3088/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.56 | > Remaining:00:15.83 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3104/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.61 | > Remaining:00:15.51 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3120/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.66 | > Remaining:00:15.19 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3136/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.71 | > Remaining:00:14.88 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3152/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.76 | > Remaining:00:14.57 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3168/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.81 | > Remaining:00:14.26 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3184/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.86 | > Remaining:00:13.95 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3200/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.91 | > Remaining:00:13.64 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3216/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:49.95 | > Remaining:00:13.34 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3232/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.00 | > Remaining:00:13.04 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3248/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.04 | > Remaining:00:12.75 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3264/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.09 | > Remaining:00:12.45 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3280/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.13 | > Remaining:00:12.16 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3296/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.18 | > Remaining:00:11.87 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3312/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.22 | > Remaining:00:11.58 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3328/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.27 | > Remaining:00:11.29 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3344/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.31 | > Remaining:00:11.01 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3360/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.35 | > Remaining:00:10.73 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3376/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.40 | > Remaining:00:10.45 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3392/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.45 | > Remaining:00:10.17 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3408/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.49 | > Remaining:00:09.90 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3424/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.53 | > Remaining:00:09.63 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3440/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.57 | > Remaining:00:09.36 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3456/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.62 | > Remaining:00:09.09 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3472/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.66 | > Remaining:00:08.82 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3488/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.70 | > Remaining:00:08.56 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3504/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.75 | > Remaining:00:08.30 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3520/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.79 | > Remaining:00:08.04 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3536/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.84 | > Remaining:00:07.78 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3552/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.89 | > Remaining:00:07.52 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3568/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.93 | > Remaining:00:07.27 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3584/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:50.99 | > Remaining:00:07.02 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3600/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.03 | > Remaining:00:06.77 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3616/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.07 | > Remaining:00:06.52 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3632/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.11 | > Remaining:00:06.27 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3648/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.15 | > Remaining:00:06.02 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3664/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.19 | > Remaining:00:05.78 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3680/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.23 | > Remaining:00:05.54 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3696/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.27 | > Remaining:00:05.30 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3712/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.31 | > Remaining:00:05.06 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3728/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.35 | > Remaining:00:04.82 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3744/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.39 | > Remaining:00:04.59 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3760/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.44 | > Remaining:00:04.35 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3776/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.48 | > Remaining:00:04.12 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3792/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.52 | > Remaining:00:03.89 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3808/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.56 | > Remaining:00:03.66 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3824/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.59 | > Remaining:00:03.43 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3840/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.63 | > Remaining:00:03.21 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3856/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.67 | > Remaining:00:02.98 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3872/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.71 | > Remaining:00:02.76 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3888/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.74 | > Remaining:00:02.54 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3904/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.78 | > Remaining:00:02.32 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3920/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.82 | > Remaining:00:02.10 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3936/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.86 | > Remaining:00:01.88 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3952/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.89 | > Remaining:00:01.67 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3968/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.93 | > Remaining:00:01.45 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 3984/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:51.97 | > Remaining:00:01.24 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 4000/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.00 | > Remaining:00:01.03 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 4016/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.04 | > Remaining:00:00.82 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 4032/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.07 | > Remaining:00:00.61 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 4048/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.11 | > Remaining:00:00.41 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 4064/4096 > │ Fra:1 Mem:86.31M (Peak 86.31M) | Time:00:52.15 | > Remaining:00:00.20 | Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample > 4080/4096 > │ Fra:1 Mem:118.31M (Peak 166.31M) | Time:01:01.75 | > Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Sample 4096/4096 > │ Fra:1 Mem:118.31M (Peak 166.31M) | Time:01:01.75 | > Mem:76.19M, Peak:76.19M | Scene, ViewLayer | Finished > │ Saved: 'C:\spiral_blender.png' > │ Time: 01:02.10 (Saving: 00:00.34) > │ > │ > │ Blender quit > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../apps/spiral/vscode/build.ps1 } | Invoke-Block > > ── [ 4.61s - stdout ] ────────────────────────────────────────────────────────── > │ bun install v1.2.7 (5c0fa6dc) > │ > │ Checked 242 installs across 234 packages (no changes) > [279.00ms] > │ polyglot/scripts/core.ps1/GetFullPath / Path: ./LICENSE / > Location: C:\home\git\polyglot\apps\spiral\vscode / ResolvedLocation: > C:\home\git\polyglot\apps\spiral\vscode > │ polyglot/scripts/core.ps1/GetFullPath / FullPath: > C:\home\git\polyglot\apps\spiral\vscode\LICENSE > │ polyglot/scripts/core.ps1/EnsureSymbolicLink / Parent: > C:\home\git\polyglot\apps\spiral\vscode / Path: > C:\home\git\polyglot\apps\spiral\vscode\LICENSE > │ polyglot/scripts/core.ps1/GetFullPath / Path: > ../../../LICENSE / Location: C:\home\git\polyglot\apps\spiral\vscode / > ResolvedLocation: C:\home\git\polyglot\apps\spiral\vscode > │ polyglot/scripts/core.ps1/GetFullPath / FullPath: > C:\home\git\polyglot\LICENSE > │ polyglot/scripts/core.ps1/EnsureSymbolicLink / FullPath: > C:\home\git\polyglot\apps\spiral\vscode\LICENSE / Target: > C:\home\git\polyglot\LICENSE / ResolvedTarget: C:\home\git\polyglot\LICENSE > │ polyglot/scripts/core.ps1/EnsureSymbolicLink / Symlink > already exists: C:\home\git\polyglot\apps\spiral\vscode\LICENSE -> > C:\home\git\polyglot\LICENSE > │ > │ out\src\extension.js 2.4kb > │ out\media\cellOutputScrollButtons.js 1.9kb > │ > │ ⚡ Done in 9ms > │ WARNING Neither a .vscodeignore file nor a "files" > property in package.json was found. To ensure only necessary files are included > in your extension, add a .vscodeignore file or specify the "files" property in > package.json. More info: https://aka.ms/vscode-vscodeignore > │ > │ INFO Files included in the VSIX: > │ spiral-vscode-0.0.1.vsix > │ ├─ [Content_Types].xml > │ ├─ extension.vsixmanifest > │ └─ extension/ > │ ├─ .gitignore [0.01 KB] > │ ├─ LICENSE.txt [33.71 KB] > │ ├─ build.ps1 [0.41 KB] > │ ├─ bun.lockb [86.98 KB] > │ ├─ compile.ps1 [0.48 KB] > │ ├─ package.json [1.55 KB] > │ ├─ media/ > │ │ └─ cellOutputScrollButtons.ts [1.8 KB] > │ ├─ node_modules/ > │ │ └─ vscode-uri/ > │ │ ├─ .lsifrc.json [0.12 KB] > │ │ ├─ LICENSE.md [1.04 KB] > │ │ ├─ README.md [2.42 KB] > │ │ ├─ package.json [1.06 KB] > │ │ ├─ .github/ > │ │ │ └─ workflows/ (1 file) [0.62 KB] > │ │ └─ lib/ > │ │ ├─ esm/ (2 files) [72.76 KB] > │ │ └─ umd/ (7 files) [92.51 KB] > │ ├─ out/ > │ │ ├─ media/ > │ │ │ └─ cellOutputScrollButtons.js [1.86 KB] > │ │ └─ src/ > │ │ └─ extension.js [2.44 KB] > │ └─ src/ > │ └─ extension.ts [1.38 KB] > │ > │ DONE Packaged: out\spiral-vscode-0.0.1.vsix (26 files, > 106.76 KB) > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ../apps/ipfs/build.ps1 } | Invoke-Block > > ── [ 650.52ms - stdout ] ─────────────────────────────────────────────────────── > │ bun install v1.2.7 (5c0fa6dc) > │ > │ Done! Checked 221 packages (no changes) [181.00ms] > │ > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { pwsh ./outdated.ps1 } | Invoke-Block > > ── [ 1.30m - stdout ] ────────────────────────────────────────────────────────── > │ Paket version 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 > │ Resolving dependency graph... > │ Outdated packages found: > │ Group: Main > │ * Argu 6.2.4 -> 6.2.5 > │ * Expecto.FsCheck 11.0.0-alpha8 -> 11.0.0-alpha8-fscheck2 > │ * Fable.Core 4.3 -> 4.5.0 > │ * FsCheck 3.0.1 -> 2.16.6 > │ * Microsoft.AspNetCore.App.Ref 9.0.3 -> > 10.0.0-preview.2.25164.1 > │ * Microsoft.AspNetCore.Connections.Abstractions 7.0 -> > 10.0.0-preview.2.25164.1 > │ * Microsoft.AspNetCore.Http.Connections.Client 7.0 -> > 10.0.0-preview.2.25164.1 > │ * Microsoft.AspNetCore.Http.Connections.Common 7.0 -> > 10.0.0-preview.2.25164.1 > │ * Microsoft.AspNetCore.SignalR.Client 7.0 -> > 10.0.0-preview.2.25164.1 > │ * Microsoft.AspNetCore.SignalR.Client.Core 7.0 -> > 10.0.0-preview.2.25164.1 > │ * Microsoft.AspNetCore.SignalR.Common 7.0 -> > 10.0.0-preview.2.25164.1 > │ * Microsoft.AspNetCore.SignalR.Protocols.Json 7.0 -> > 10.0.0-preview.2.25164.1 > │ * Microsoft.Bcl.AsyncInterfaces 9.0.3 -> > 10.0.0-preview.2.25163.2 > │ * Microsoft.Extensions.DependencyInjection 9.0.3 -> > 10.0.0-preview.2.25163.2 > │ * Microsoft.Extensions.DependencyInjection.Abstractions > 9.0.3 -> 10.0.0-preview.2.25163.2 > │ * Microsoft.Extensions.Features 7.0 -> > 10.0.0-preview.2.25164.1 > │ * Microsoft.Extensions.Logging 9.0.3 -> > 10.0.0-preview.2.25163.2 > │ * Microsoft.Extensions.Logging.Abstractions 9.0.3 -> > 10.0.0-preview.2.25163.2 > │ * Microsoft.Extensions.Options 9.0.3 -> > 10.0.0-preview.2.25163.2 > │ * Microsoft.Extensions.Primitives 9.0.3 -> > 10.0.0-preview.2.25163.2 > │ * System.CodeDom 9.0.3 -> 10.0.0-preview.2.25163.2 > │ * System.IO.Pipelines 9.0.3 -> 10.0.0-preview.2.25163.2 > │ * System.Management 7.0 -> 10.0.0-preview.2.25163.2 > │ * System.Threading.Channels 9.0.3 -> > 10.0.0-preview.2.25163.2 > │ * System.Threading.Tasks.Extensions 4.6.1 -> 4.6.2 > │ Total time taken: 41 seconds > │ > │ CheckToml / toml: C:\home\git\polyglot\workspace\Cargo.toml > │ chat_contract_tests > │ ================ > │ Name Project Compat Latest Kind > Platform > │ ---- ------- ------ ------ ---- > -------- > │ equivalent 1.0.1 Removed Removed Normal --- > │ hashbrown 0.15.2 0.12.3 0.12.3 Normal --- > │ indexmap 2.7.0 1.9.3 1.9.3 Normal --- > │ near-sandbox-utils 0.9.0 0.8.0 0.8.0 Normal --- > │ > │ CheckToml / toml: > C:\home\git\polyglot\apps\chat\contract\Cargo.toml > │ error: failed to download `hybrid-array v0.3.0` > │ > │ Caused by: > │ unable to get packages from source > │ > │ Caused by: > │ failed to parse manifest at > `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22 > bba15001f\hybrid-array-0.3.0\Cargo.toml` > │ > │ Caused by: > │ feature `edition2024` is required > │ > │ The package requires the Cargo feature called > `edition2024`, but that feature is not stabilized in this version of Cargo > (1.81.0). > │ Consider trying a more recent nightly release. > │ See > https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for > more information about the status of this feature. > │ > │ # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: > C:\home\git\polyglot\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / > $ScriptBlock: > │ 'cargo outdated -m $toml @_args' > │ > │ > │ CheckToml / toml: > C:\home\git\polyglot\apps\chat\contract\tests\Cargo.toml > │ error: failed to download `hybrid-array v0.3.0` > │ > │ Caused by: > │ unable to get packages from source > │ > │ Caused by: > │ failed to parse manifest at > `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22 > bba15001f\hybrid-array-0.3.0\Cargo.toml` > │ > │ Caused by: > │ feature `edition2024` is required > │ > │ The package requires the Cargo feature called > `edition2024`, but that feature is not stabilized in this version of Cargo > (1.81.0). > │ Consider trying a more recent nightly release. > │ See > https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for > more information about the status of this feature. > │ > │ # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: > C:\home\git\polyglot\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / > $ScriptBlock: > │ 'cargo outdated -m $toml @_args' > │ > │ > │ CheckToml / toml: C:\home\git\polyglot\apps\plot\Cargo.toml > │ error: failed to download `hybrid-array v0.3.0` > │ > │ Caused by: > │ unable to get packages from source > │ > │ Caused by: > │ failed to parse manifest at > `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22 > bba15001f\hybrid-array-0.3.0\Cargo.toml` > │ > │ Caused by: > │ feature `edition2024` is required > │ > │ The package requires the Cargo feature called > `edition2024`, but that feature is not stabilized in this version of Cargo > (1.81.0). > │ Consider trying a more recent nightly release. > │ See > https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for > more information about the status of this feature. > │ > │ # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: > C:\home\git\polyglot\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / > $ScriptBlock: > │ 'cargo outdated -m $toml @_args' > │ > │ > │ CheckJson / json: C:/home/git/polyglot > │ $ npm-check-updates --target greatest > │ Using bun > │ Checking C:\home\git\polyglot\package.json > │ > │ > │ @types/node ~22.10 → ~22.13 > │ npm-check-updates ~17.1.14 → ~17.1.16 > │ > │ Run ncu --target greatest -u to upgrade package.json > │ > │ CheckJson / json: C:/home/git/polyglot/apps/ipfs > │ $ npm-check-updates --target greatest > │ Using bun > │ Checking C:\home\git\polyglot\apps\ipfs\package.json > │ > │ > │ @types/node ~22.10 → ~22.13 > │ npm-check-updates ~17.1.14 → ~17.1.16 > │ > │ Run ncu --target greatest -u to upgrade package.json > │ > │ CheckJson / json: > C:/home/git/polyglot/apps/spiral/temp/extension > │ $ npm-check-updates --target greatest > │ Using bun > │ Checking > C:\home\git\polyglot\apps\spiral\temp\extension\package.json > │ > │ > │ @playwright/test 1.44.0 → 1.52.0-alpha-2025-03-29 > │ @types/chrome ~0.0.268 → ~0.0.313 > │ npm-check-updates ~17.1.14 → ~17.1.16 > │ > │ Run ncu --target greatest -u to upgrade package.json > │ > │ CheckJson / json: C:/home/git/polyglot/apps/spiral/vscode > │ $ npm-check-updates --target greatest > │ Using bun > │ Checking C:\home\git\polyglot\apps\spiral\vscode\package.json > │ > │ > │ @types/node ~22.10 → ~22.13 > │ @types/vscode ~1.96 → ~1.98 > │ npm-check-updates ~17.1.14 → ~17.1.16 > │ > │ Run ncu --target greatest -u to upgrade package.json > │ > │ CheckJson / json: > C:/home/git/polyglot/deps/The-Spiral-Language/VS Code Plugin > │ $ npm-check-updates --target greatest > │ Checking C:\home\git\polyglot\deps\The-Spiral-Language\VS > Code Plugin\package.json > │ > │ > │ @microsoft/signalr 8.0.0 → 8.0.7 > │ @types/node ~22.10 → ~22.13 > │ @types/vscode ~1.95 → ~1.98 > │ @vscode/vsce ~3.2 → ~3.3 > │ esbuild ~0.24 → ~0.25 > │ npm-check-updates ~17.1.14 → ~17.1.16 > │ portfinder ^1.0.32 → ^1.0.35 > │ > │ Run ncu --target greatest -u to upgrade package.json > │ 00:59:42 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 2645103 } 00:59:42 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/polyglot/scripts/build.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/polyglot/scripts/build.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:59:44 v #5 ! [NbConvertApp] Converting notebook c:/home/git/polyglot/scripts/build.dib.ipynb to html 00:59:44 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:59:44 v #7 ! validate(nb) 00:59:44 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:59:44 v #9 ! return _pygments_highlight( 00:59:52 v #10 ! [NbConvertApp] Writing 2786399 bytes to c:\home\git\polyglot\scripts\build.dib.html 00:59:52 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 847 } 00:59:52 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 847 } 00:59:52 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/polyglot/scripts/build.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/polyglot/scripts/build.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:59:52 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:59:52 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:59:52 d #16 spiral.run / dib / { exit_code = 0; result_length = 2646009 } dice/lib/build.ps1 / ScriptDir: C:\home\git\dice\lib / ResolvedScriptDir: C:\home\git\dice\lib 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "C:\home\git\dice\lib/dice.dib"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/dice/lib/dice.dib", "--output-path", "c:/home/git/dice/lib/dice.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/dice/lib/dice.dib" --output-path "c:/home/git/dice/lib/dice.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # dice (Dice) > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > open testing > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## sixth_power_sequence > > ── spiral ────────────────────────────────────────────────────────────────────── > inl sixth_power_sequence () = > stream.iterate_map ((*) 6) (fun x => if x <= 0 then None else Some x) 1 > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > sixth_power_sequence () > |> stream.take_while (fun _ i => i <= 7i32) > |> stream.to_list > |> _assert_eq [[ 1u64; 6; 36; 216; 1296; 7776; 46656; 279936 ]] > > ── [ 1.36s - stdout ] ────────────────────────────────────────────────────────── > │ { name = __assert_eq; actual = UH0_1 > │ (1UL, > │ UH0_1 > │ (6UL, > │ UH0_1 > │ (36UL, > │ UH0_1 > │ (216UL, > │ UH0_1 > │ (1296UL, UH0_1 (7776UL, UH0_1 (46656UL, UH0_1 > (279936UL, UH0_0)))))))); expected = UH0_1 > │ (1UL, > │ UH0_1 > │ (6UL, > │ UH0_1 > │ (36UL, > │ UH0_1 > │ (216UL, > │ UH0_1 > │ (1296UL, UH0_1 (7776UL, UH0_1 (46656UL, UH0_1 > (279936UL, UH0_0)))))))) } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## accumulate_dice_rolls > > ── spiral ────────────────────────────────────────────────────────────────────── > inl accumulate_dice_rolls > (rolls : list u8) > (power : i8) > acc > = > inl rec body acc power rolls = > match rolls with > | _ when power < 0 => > inl result = acc + 1 > trace Debug > fun () => "dice.accumulate_dice_rolls" > fun () => { power acc result } > Some (result, rolls) > | [[]] => None > | roll :: rest when roll > 1 => > inl coeff = sixth_power_sequence () |> stream.item power > inl value = conv (roll - 1) * coeff > trace Debug > fun () => "dice.accumulate_dice_rolls" > fun () => { power acc roll value } > loop (acc + value) (power - 1) rest > | roll :: rest => > trace Debug > fun () => "dice.accumulate_dice_rolls" > fun () => { power acc roll } > loop acc (power - 1) rest > and inl loop acc power rolls = > if var_is rolls |> not > then body acc power rolls > else > inl acc = dyn acc > join body acc power rolls > loop acc power rolls > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > accumulate_dice_rolls [[ 6; 5; 4; 3; 2 ]] 0 1000i32 > |> _assert_eq (Some (1006, [[ 5; 4; 3; 2 ]])) > > ── [ 1.56s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 0; > acc = 1000; roll = 6; value = 5 } > │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = -1; > acc = 1005; result = 1006 } > │ { name = __assert_eq; actual = US6_0 (1006, UH0_1 (5uy, UH0_1 > (4uy, UH0_1 (3uy, UH0_1 (2uy, UH0_0))))); expected = US6_0 (1006, UH0_1 (5uy, > UH0_1 (4uy, UH0_1 (3uy, UH0_1 (2uy, UH0_0))))) } > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > accumulate_dice_rolls [[ 6; 5; 4; 3; 2 ]] 1 1000i32 > |> _assert_eq (Some (1035, [[ 4; 3; 2 ]])) > > ── [ 1.49s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 1; > acc = 1000; roll = 6; value = 30 } > │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 0; > acc = 1030; roll = 5; value = 4 } > │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = -1; > acc = 1034; result = 1035 } > │ { name = __assert_eq; actual = US6_0 (1035, UH0_1 (4uy, UH0_1 > (3uy, UH0_1 (2uy, UH0_0)))); expected = US6_0 (1035, UH0_1 (4uy, UH0_1 (3uy, > UH0_1 (2uy, UH0_0)))) } > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > accumulate_dice_rolls [[ 6; 5; 4; 3; 2 ]] 2 1000i32 > |> _assert_eq (Some (1208, [[ 3; 2 ]])) > > ── [ 1.32s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 2; > acc = 1000; roll = 6; value = 180 } > │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 1; > acc = 1180; roll = 5; value = 24 } > │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 0; > acc = 1204; roll = 4; value = 3 } > │ 00:00:00 d #4 dice.accumulate_dice_rolls / { power = -1; > acc = 1207; result = 1208 } > │ { name = __assert_eq; actual = US6_0 (1208, UH0_1 (3uy, UH0_1 > (2uy, UH0_0))); expected = US6_0 (1208, UH0_1 (3uy, UH0_1 (2uy, UH0_0))) } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## roll_within_bounds > > ── spiral ────────────────────────────────────────────────────────────────────── > inl roll_within_bounds max rolls = > inl power = listm.length rolls - 1 > match accumulate_dice_rolls rolls power 0 with > | Some (result, _) when result >= 1 && result <= max => Some result > | _ => None > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > roll_within_bounds 2000i32 [[ 1; 5; 4; 4; 5 ]] > |> _assert_eq (Some 995) > > ── [ 1.40s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 4; > acc = 0; roll = 1 } > │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 3; > acc = 0; roll = 5; value = 864 } > │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 2; > acc = 864; roll = 4; value = 108 } > │ 00:00:00 d #4 dice.accumulate_dice_rolls / { power = 1; > acc = 972; roll = 4; value = 18 } > │ 00:00:00 d #5 dice.accumulate_dice_rolls / { power = 0; > acc = 990; roll = 5; value = 4 } > │ 00:00:00 d #6 dice.accumulate_dice_rolls / { power = -1; > acc = 994; result = 995 } > │ { name = __assert_eq; actual = US6_0 995; expected = US6_0 > 995 } > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > roll_within_bounds 2000i32 [[ 2; 2; 6; 4; 5 ]] > |> _assert_eq (Some 1715) > > ── [ 1.17s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 4; > acc = 0; roll = 2; value = 1296 } > │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 3; > acc = 1296; roll = 2; value = 216 } > │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 2; > acc = 1512; roll = 6; value = 180 } > │ 00:00:00 d #4 dice.accumulate_dice_rolls / { power = 1; > acc = 1692; roll = 4; value = 18 } > │ 00:00:00 d #5 dice.accumulate_dice_rolls / { power = 0; > acc = 1710; roll = 5; value = 4 } > │ 00:00:00 d #6 dice.accumulate_dice_rolls / { power = -1; > acc = 1714; result = 1715 } > │ { name = __assert_eq; actual = US6_0 1715; expected = US6_0 > 1715 } > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > roll_within_bounds 2000i32 [[ 4; 1; 1; 2; 3 ]] > |> _assert_eq None > > ── [ 918.09ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 4; > acc = 0; roll = 4; value = 3888 } > │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 3; > acc = 3888; roll = 1 } > │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 2; > acc = 3888; roll = 1 } > │ 00:00:00 d #4 dice.accumulate_dice_rolls / { power = 1; > acc = 3888; roll = 2; value = 6 } > │ 00:00:00 d #5 dice.accumulate_dice_rolls / { power = 0; > acc = 3894; roll = 3; value = 2 } > │ 00:00:00 d #6 dice.accumulate_dice_rolls / { power = -1; > acc = 3896; result = 3897 } > │ { name = __assert_eq; actual = US6_1; expected = US6_1 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## calculate_dice_count > > ── spiral ────────────────────────────────────────────────────────────────────── > inl calculate_dice_count max = > inl rec body n p = > inl return () = > trace Debug > fun () => "dice.calculate_dice_count" > fun () => { max p n } > n > if p < max then > inl p' = p * 6 > if p' > p > then loop (n + 1) p' > else return () > else return () > and inl loop n p = > if var_is max |> not > then body n p > else > inl n = dyn n > inl p = dyn p > join body n p > if max = 1 > then 1 > else loop 0 1 > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > calculate_dice_count 36i32 > |> _assert_eq 2i32 > > ── [ 738.68ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.calculate_dice_count / { max = 36; p > = 36; n = 2 } > │ { name = __assert_eq; actual = 2; expected = 2 } > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > calculate_dice_count 7777i32 > |> _assert_eq 6i32 > > ── [ 742.35ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.calculate_dice_count / { max = 7777; > p = 46656; n = 6 } > │ { name = __assert_eq; actual = 6; expected = 6 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## roll_dice > > ── spiral ────────────────────────────────────────────────────────────────────── > let roll_dice () : u8 = > random' 1 7 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rotate_number > > ── spiral ────────────────────────────────────────────────────────────────────── > inl rotate_number forall t {number}. (max : i64) (n : t) : t = > (conv n - 1 + max) % max + 1 |> conv > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rotate_numbers > > ── spiral ────────────────────────────────────────────────────────────────────── > inl rotate_numbers max items = > items |> stream.map (rotate_number max) > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > listm'.init_series -1 14 1i32 > |> stream.from_list > |> rotate_numbers 6 > |> stream.to_list > |> _assert_eq [[ 5; 6; 1; 2; 3; 4; 5; 6; 1; 2; 3; 4; 5; 6; 1; 2 ]] > > ── [ 249.37ms - stdout ] ─────────────────────────────────────────────────────── > │ { name = __assert_eq; actual = UH0_1 > │ (5, > │ UH0_1 > │ (6, > │ UH0_1 > │ (1, > │ UH0_1 > │ (2, > │ UH0_1 > │ (3, > │ UH0_1 > │ (4, > │ UH0_1 > │ (5, > │ UH0_1 > │ (6, > │ UH0_1 > │ (1, > │ UH0_1 > │ (2, > │ UH0_1 > │ (3, > │ UH0_1 > │ (4, > │ UH0_1 > │ (5, UH0_1 (6, UH0_1 (1, > UH0_1 (2, UH0_0)))))))))))))))); expected = UH0_1 > │ (5, > │ UH0_1 > │ (6, > │ UH0_1 > │ (1, > │ UH0_1 > │ (2, > │ UH0_1 > │ (3, > │ UH0_1 > │ (4, > │ UH0_1 > │ (5, > │ UH0_1 > │ (6, > │ UH0_1 > │ (1, > │ UH0_1 > │ (2, > │ UH0_1 > │ (3, > │ UH0_1 > │ (4, > │ UH0_1 > │ (5, UH0_1 (6, UH0_1 (1, > UH0_1 (2, UH0_0)))))))))))))))) } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## create_sequential_roller > > ── spiral ────────────────────────────────────────────────────────────────────── > inl create_sequential_roller list = > inl s = list |> listm.rev |> listm.append list |> stream.from_list |> > stream.memoize > inl current_index = mut 0i64 > inl acc = mut 1 > inl len = mut -1 > inl last_item = mut None > let rec loop () = > fun () => > inl current_index = *current_index > inl acc = *acc > inl len = *len > inl last_item = *last_item |> optionm'.box > trace Debug > fun () => "dice.create_sequential_roller / roll" > fun () => { current_index acc len last_item = last_item |> > sm'.format_debug } > |> fun x => x () > match s () |> stream.try_item *current_index with > | Some item => > current_index <- *current_index + 1 > last_item <- Some item > item > | None => > trace Debug (fun () => "dice.create_sequential_roller / roll / > None") id > if *len = -1 > then len <- *current_index > acc <- > if *acc >= *len > then 1 > else *acc + 1 > current_index <- *acc - 1 > last_item <- None > loop () > loop > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > inl sequential_roll = create_sequential_roller [[ 1i32; 2; 3; 4 ]] > > am.init 50i32 (ignore >> sequential_roll) > |> _assert_eq (a ;[[ 1; 2; 3; 4; 4; 3; 2; 1; 2; 3; 4; 4; 3; 2; 1; 3; 4; 4; 3; 2; > 1; 4; 4; 3; 2; 1; > 4; 3; 2; 1; 3; 2; 1; 2; 1; 1; 1; 2; 3; 4; 4; 3; 2; 1; 2; 3; 4; 4; 3; 2 ]] : a > i32 i32) > > ── [ 953.75ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.create_sequential_roller / roll / { > current_index = 0; acc = 1; len = -1; last_item = None } > │ 00:00:00 d #2 dice.create_sequential_roller / roll / { > current_index = 1; acc = 1; len = -1; last_item = Some 1 } > │ 00:00:00 d #3 dice.create_sequential_roller / roll / { > current_index = 2; acc = 1; len = -1; last_item = Some 2 } > │ 00:00:00 d #4 dice.create_sequential_roller / roll / { > current_index = 3; acc = 1; len = -1; last_item = Some 3 } > │ 00:00:00 d #5 dice.create_sequential_roller / roll / { > current_index = 4; acc = 1; len = -1; last_item = Some 4 } > │ 00:00:00 d #6 dice.create_sequential_roller / roll / { > current_index = 5; acc = 1; len = -1; last_item = Some 4 } > │ 00:00:00 d #7 dice.create_sequential_roller / roll / { > current_index = 6; acc = 1; len = -1; last_item = Some 3 } > │ 00:00:00 d #8 dice.create_sequential_roller / roll / { > current_index = 7; acc = 1; len = -1; last_item = Some 2 } > │ 00:00:00 d #9 dice.create_sequential_roller / roll / { > current_index = 8; acc = 1; len = -1; last_item = Some 1 } > │ 00:00:00 d #10 dice.create_sequential_roller / roll / > None > │ 00:00:00 d #11 dice.create_sequential_roller / roll / { > current_index = 1; acc = 2; len = 8; last_item = None } > │ 00:00:00 d #12 dice.create_sequential_roller / roll / { > current_index = 2; acc = 2; len = 8; last_item = Some 2 } > │ 00:00:00 d #13 dice.create_sequential_roller / roll / { > current_index = 3; acc = 2; len = 8; last_item = Some 3 } > │ 00:00:00 d #14 dice.create_sequential_roller / roll / { > current_index = 4; acc = 2; len = 8; last_item = Some 4 } > │ 00:00:00 d #15 dice.create_sequential_roller / roll / { > current_index = 5; acc = 2; len = 8; last_item = Some 4 } > │ 00:00:00 d #16 dice.create_sequential_roller / roll / { > current_index = 6; acc = 2; len = 8; last_item = Some 3 } > │ 00:00:00 d #17 dice.create_sequential_roller / roll / { > current_index = 7; acc = 2; len = 8; last_item = Some 2 } > │ 00:00:00 d #18 dice.create_sequential_roller / roll / { > current_index = 8; acc = 2; len = 8; last_item = Some 1 } > │ 00:00:00 d #19 dice.create_sequential_roller / roll / > None > │ 00:00:00 d #20 dice.create_sequential_roller / roll / { > current_index = 2; acc = 3; len = 8; last_item = None } > │ 00:00:00 d #21 dice.create_sequential_roller / roll / { > current_index = 3; acc = 3; len = 8; last_item = Some 3 } > │ 00:00:00 d #22 dice.create_sequential_roller / roll / { > current_index = 4; acc = 3; len = 8; last_item = Some 4 } > │ 00:00:00 d #23 dice.create_sequential_roller / roll / { > current_index = 5; acc = 3; len = 8; last_item = Some 4 } > │ 00:00:00 d #24 dice.create_sequential_roller / roll / { > current_index = 6; acc = 3; len = 8; last_item = Some 3 } > │ 00:00:00 d #25 dice.create_sequential_roller / roll / { > current_index = 7; acc = 3; len = 8; last_item = Some 2 } > │ 00:00:00 d #26 dice.create_sequential_roller / roll / { > current_index = 8; acc = 3; len = 8; last_item = Some 1 } > │ 00:00:00 d #27 dice.create_sequential_roller / roll / > None > │ 00:00:00 d #28 dice.create_sequential_roller / roll / { > current_index = 3; acc = 4; len = 8; last_item = None } > │ 00:00:00 d #29 dice.create_sequential_roller / roll / { > current_index = 4; acc = 4; len = 8; last_item = Some 4 } > │ 00:00:00 d #30 dice.create_sequential_roller / roll / { > current_index = 5; acc = 4; len = 8; last_item = Some 4 } > │ 00:00:00 d #31 dice.create_sequential_roller / roll / { > current_index = 6; acc = 4; len = 8; last_item = Some 3 } > │ 00:00:00 d #32 dice.create_sequential_roller / roll / { > current_index = 7; acc = 4; len = 8; last_item = Some 2 } > │ 00:00:00 d #33 dice.create_sequential_roller / roll / { > current_index = 8; acc = 4; len = 8; last_item = Some 1 } > │ 00:00:00 d #34 dice.create_sequential_roller / roll / > None > │ 00:00:00 d #35 dice.create_sequential_roller / roll / { > current_index = 4; acc = 5; len = 8; last_item = None } > │ 00:00:00 d #36 dice.create_sequential_roller / roll / { > current_index = 5; acc = 5; len = 8; last_item = Some 4 } > │ 00:00:00 d #37 dice.create_sequential_roller / roll / { > current_index = 6; acc = 5; len = 8; last_item = Some 3 } > │ 00:00:00 d #38 dice.create_sequential_roller / roll / { > current_index = 7; acc = 5; len = 8; last_item = Some 2 } > │ 00:00:00 d #39 dice.create_sequential_roller / roll / { > current_index = 8; acc = 5; len = 8; last_item = Some 1 } > │ 00:00:00 d #40 dice.create_sequential_roller / roll / > None > │ 00:00:00 d #41 dice.create_sequential_roller / roll / { > current_index = 5; acc = 6; len = 8; last_item = None } > │ 00:00:00 d #42 dice.create_sequential_roller / roll / { > current_index = 6; acc = 6; len = 8; last_item = Some 3 } > │ 00:00:00 d #43 dice.create_sequential_roller / roll / { > current_index = 7; acc = 6; len = 8; last_item = Some 2 } > │ 00:00:00 d #44 dice.create_sequential_roller / roll / { > current_index = 8; acc = 6; len = 8; last_item = Some 1 } > │ 00:00:00 d #45 dice.create_sequential_roller / roll / > None > │ 00:00:00 d #46 dice.create_sequential_roller / roll / { > current_index = 6; acc = 7; len = 8; last_item = None } > │ 00:00:00 d #47 dice.create_sequential_roller / roll / { > current_index = 7; acc = 7; len = 8; last_item = Some 2 } > │ 00:00:00 d #48 dice.create_sequential_roller / roll / { > current_index = 8; acc = 7; len = 8; last_item = Some 1 } > │ 00:00:00 d #49 dice.create_sequential_roller / roll / > None > │ 00:00:00 d #50 dice.create_sequential_roller / roll / { > current_index = 7; acc = 8; len = 8; last_item = None } > │ 00:00:00 d #51 dice.create_sequential_roller / roll / { > current_index = 8; acc = 8; len = 8; last_item = Some 1 } > │ 00:00:00 d #52 dice.create_sequential_roller / roll / > None > │ 00:00:00 d #53 dice.create_sequential_roller / roll / { > current_index = 0; acc = 1; len = 8; last_item = None } > │ 00:00:00 d #54 dice.create_sequential_roller / roll / { > current_index = 1; acc = 1; len = 8; last_item = Some 1 } > │ 00:00:00 d #55 dice.create_sequential_roller / roll / { > current_index = 2; acc = 1; len = 8; last_item = Some 2 } > │ 00:00:00 d #56 dice.create_sequential_roller / roll / { > current_index = 3; acc = 1; len = 8; last_item = Some 3 } > │ 00:00:00 d #57 dice.create_sequential_roller / roll / { > current_index = 4; acc = 1; len = 8; last_item = Some 4 } > │ 00:00:00 d #58 dice.create_sequential_roller / roll / { > current_index = 5; acc = 1; len = 8; last_item = Some 4 } > │ 00:00:00 d #59 dice.create_sequential_roller / roll / { > current_index = 6; acc = 1; len = 8; last_item = Some 3 } > │ 00:00:00 d #60 dice.create_sequential_roller / roll / { > current_index = 7; acc = 1; len = 8; last_item = Some 2 } > │ 00:00:00 d #61 dice.create_sequential_roller / roll / { > current_index = 8; acc = 1; len = 8; last_item = Some 1 } > │ 00:00:00 d #62 dice.create_sequential_roller / roll / > None > │ 00:00:00 d #63 dice.create_sequential_roller / roll / { > current_index = 1; acc = 2; len = 8; last_item = None } > │ 00:00:00 d #64 dice.create_sequential_roller / roll / { > current_index = 2; acc = 2; len = 8; last_item = Some 2 } > │ 00:00:00 d #65 dice.create_sequential_roller / roll / { > current_index = 3; acc = 2; len = 8; last_item = Some 3 } > │ 00:00:00 d #66 dice.create_sequential_roller / roll / { > current_index = 4; acc = 2; len = 8; last_item = Some 4 } > │ 00:00:00 d #67 dice.create_sequential_roller / roll / { > current_index = 5; acc = 2; len = 8; last_item = Some 4 } > │ 00:00:00 d #68 dice.create_sequential_roller / roll / { > current_index = 6; acc = 2; len = 8; last_item = Some 3 } > │ { name = __assert_eq; actual = [|1; 2; 3; 4; 4; 3; 2; 1; 2; > 3; 4; 4; 3; 2; 1; 3; 4; 4; 3; 2; 1; 4; 4; 3; 2; 1; > │ 4; 3; 2; 1; 3; 2; 1; 2; 1; 1; 1; 2; 3; 4; 4; 3; 2; 1; 2; 3; > 4; 4; 3; 2|]; expected = [|1; 2; 3; 4; 4; 3; 2; 1; 2; 3; 4; 4; 3; 2; 1; 3; 4; 4; > 3; 2; 1; 4; 4; 3; 2; 1; > │ 4; 3; 2; 1; 3; 2; 1; 2; 1; 1; 1; 2; 3; 4; 4; 3; 2; 1; 2; 3; > 4; 4; 3; 2|] } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## roll_progressively > > ── spiral ────────────────────────────────────────────────────────────────────── > inl roll_progressively roll reroll max = > inl power = (calculate_dice_count max) - 1 > let rec loop rolls size = > if size < power + 1 > then loop (roll () :: rolls) (size + 1) > else accumulate_dice_rolls rolls power 0 |> function > | Some (result, _) when result <= max => result > | _ when reroll => loop (listm.init power (fun _ => roll ())) power > | _ => loop (roll () :: rolls) (size + 1) > loop [[]] 0 > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > roll_progressively roll_dice false 1 > |> _assert_eq 1i32 > > ── [ 849.15ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 0; > acc = 0; roll = 6; value = 5 } > │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = -1; > acc = 5; result = 6 } > │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 0; > acc = 0; roll = 6; value = 5 } > │ 00:00:00 d #4 dice.accumulate_dice_rolls / { power = -1; > acc = 5; result = 6 } > │ 00:00:00 d #5 dice.accumulate_dice_rolls / { power = 0; > acc = 0; roll = 1 } > │ 00:00:00 d #6 dice.accumulate_dice_rolls / { power = -1; > acc = 0; result = 1 } > │ { name = __assert_eq; actual = 1; expected = 1 } > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > inl sequential_roll = create_sequential_roller [[ 5; 4; 4; 5; 1 ]] > > roll_progressively sequential_roll false 2000i32 > |> _assert_eq 995 > > ── [ 1.41s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.calculate_dice_count / { max = 2000; > p = 7776; n = 5 } > │ 00:00:00 d #2 dice.create_sequential_roller / roll / { > current_index = 0; acc = 1; len = -1; last_item = None } > │ 00:00:00 d #3 dice.create_sequential_roller / roll / { > current_index = 1; acc = 1; len = -1; last_item = Some 5uy } > │ 00:00:00 d #4 dice.create_sequential_roller / roll / { > current_index = 2; acc = 1; len = -1; last_item = Some 4uy } > │ 00:00:00 d #5 dice.create_sequential_roller / roll / { > current_index = 3; acc = 1; len = -1; last_item = Some 4uy } > │ 00:00:00 d #6 dice.create_sequential_roller / roll / { > current_index = 4; acc = 1; len = -1; last_item = Some 5uy } > │ 00:00:00 d #7 dice.accumulate_dice_rolls / { power = 4; > acc = 0; roll = 1 } > │ 00:00:00 d #8 dice.accumulate_dice_rolls / { power = 3; > acc = 0; roll = 5; value = 864 } > │ 00:00:00 d #9 dice.accumulate_dice_rolls / { power = 2; > acc = 864; roll = 4; value = 108 } > │ 00:00:00 d #10 dice.accumulate_dice_rolls / { power = 1; > acc = 972; roll = 4; value = 18 } > │ 00:00:00 d #11 dice.accumulate_dice_rolls / { power = 0; > acc = 990; roll = 5; value = 4 } > │ 00:00:00 d #12 dice.accumulate_dice_rolls / { power = > -1; acc = 994; result = 995 } > │ { name = __assert_eq; actual = 995; expected = 995 } > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > inl sequential_roll = create_sequential_roller [[ 5; 4; 4; 5; 2 ]] > > roll_progressively sequential_roll false 2000i32 > |> _assert_eq 1678 > > ── [ 1.43s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.calculate_dice_count / { max = 2000; > p = 7776; n = 5 } > │ 00:00:00 d #2 dice.create_sequential_roller / roll / { > current_index = 0; acc = 1; len = -1; last_item = None } > │ 00:00:00 d #3 dice.create_sequential_roller / roll / { > current_index = 1; acc = 1; len = -1; last_item = Some 5uy } > │ 00:00:00 d #4 dice.create_sequential_roller / roll / { > current_index = 2; acc = 1; len = -1; last_item = Some 4uy } > │ 00:00:00 d #5 dice.create_sequential_roller / roll / { > current_index = 3; acc = 1; len = -1; last_item = Some 4uy } > │ 00:00:00 d #6 dice.create_sequential_roller / roll / { > current_index = 4; acc = 1; len = -1; last_item = Some 5uy } > │ 00:00:00 d #7 dice.accumulate_dice_rolls / { power = 4; > acc = 0; roll = 2; value = 1296 } > │ 00:00:00 d #8 dice.accumulate_dice_rolls / { power = 3; > acc = 1296; roll = 5; value = 864 } > │ 00:00:00 d #9 dice.accumulate_dice_rolls / { power = 2; > acc = 2160; roll = 4; value = 108 } > │ 00:00:00 d #10 dice.accumulate_dice_rolls / { power = 1; > acc = 2268; roll = 4; value = 18 } > │ 00:00:00 d #11 dice.accumulate_dice_rolls / { power = 0; > acc = 2286; roll = 5; value = 4 } > │ 00:00:00 d #12 dice.accumulate_dice_rolls / { power = > -1; acc = 2290; result = 2291 } > │ 00:00:00 d #13 dice.create_sequential_roller / roll / { > current_index = 5; acc = 1; len = -1; last_item = Some 2uy } > │ 00:00:00 d #14 dice.accumulate_dice_rolls / { power = 4; > acc = 0; roll = 2; value = 1296 } > │ 00:00:00 d #15 dice.accumulate_dice_rolls / { power = 3; > acc = 1296; roll = 2; value = 216 } > │ 00:00:00 d #16 dice.accumulate_dice_rolls / { power = 2; > acc = 1512; roll = 5; value = 144 } > │ 00:00:00 d #17 dice.accumulate_dice_rolls / { power = 1; > acc = 1656; roll = 4; value = 18 } > │ 00:00:00 d #18 dice.accumulate_dice_rolls / { power = 0; > acc = 1674; roll = 4; value = 3 } > │ 00:00:00 d #19 dice.accumulate_dice_rolls / { power = > -1; acc = 1677; result = 1678 } > │ { name = __assert_eq; actual = 1678; expected = 1678 } > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > inl { level } = get_trace_state_or_init None > level <- Info > > join dyn listm'.init_series 1i32 10000 1 > |> listm.map (fun _ => roll_progressively roll_dice false 10i32) > |> listm'.group_by id > |> listm.map (fun (k, v) => k, (listm.length v : i32)) > |> listm'.box > |> listm'.to_array' > |> fun ar => > $'!ar |> Array.sortBy (fun (struct (a, b)) -> a)' : a i32 $'struct (int32 * > int32)' > > ── [ 1.40s - return value ] ──────────────────────────────────────────────────── > │ > <table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td > >0</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(1, > 263)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I > tem1</td><td><div > class="dni-plaintext"><pre>1</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>263</pre></div></td></tr></tbody></table></div></deta > ils></td></tr><tr><td>1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(2, > 712)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I > tem1</td><td><div > class="dni-plaintext"><pre>2</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>712</pre></div></td></tr></tbody></table></div></deta > ils></td></tr><tr><td>2</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(3, > 1396)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item1</td><td><div > class="dni-plaintext"><pre>3</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>1396</pre></div></td></tr></tbody></table></div></det > ails></td></tr><tr><td>3</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(4, > 1320)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item1</td><td><div > class="dni-plaintext"><pre>4</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>1320</pre></div></td></tr></tbody>...thead><tr></tr>< > /thead><tbody><tr><td>Item1</td><td><div > class="dni-plaintext"><pre>8</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>718</pre></div></td></tr></tbody></table></div></deta > ils></td></tr><tr><td>8</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(9, > 1323)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item1</td><td><div > class="dni-plaintext"><pre>9</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>1323</pre></div></td></tr></tbody></table></div></det > ails></td></tr><tr><td>9</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(10, > 1288)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item1</td><td><div > class="dni-plaintext"><pre>10</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>1288</pre></div></td></tr></tbody></table></div></det > ails></td></tr></tbody></table><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > inl { level } = get_trace_state_or_init None > level <- Info > > join dyn listm'.init_series 1i32 10000 1 > |> listm.map (fun _ => roll_progressively roll_dice true 10i32) > |> listm'.group_by id > |> listm.map (fun (k, v) => k, (listm.length v : i32)) > |> listm'.box > |> listm'.to_array' > |> fun ar => > $'!ar |> Array.sortBy (fun (struct (a, b)) -> a)' : a i32 $'struct (int32 * > int32)' > > ── [ 1.27s - return value ] ──────────────────────────────────────────────────── > │ > <table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td > >0</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(1, > 1008)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item1</td><td><div > class="dni-plaintext"><pre>1</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>1008</pre></div></td></tr></tbody></table></div></det > ails></td></tr><tr><td>1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(2, > 976)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I > tem1</td><td><div > class="dni-plaintext"><pre>2</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>976</pre></div></td></tr></tbody></table></div></deta > ils></td></tr><tr><td>2</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(3, > 1014)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item1</td><td><div > class="dni-plaintext"><pre>3</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>1014</pre></div></td></tr></tbody></table></div></det > ails></td></tr><tr><td>3</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(4, > 1026)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item1</td><td><div > class="dni-plaintext"><pre>4</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>1026</pre></div></td></tr></tbod...<thead><tr></tr></ > thead><tbody><tr><td>Item1</td><td><div > class="dni-plaintext"><pre>8</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>1023</pre></div></td></tr></tbody></table></div></det > ails></td></tr><tr><td>8</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(9, > 944)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I > tem1</td><td><div > class="dni-plaintext"><pre>9</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>944</pre></div></td></tr></tbody></table></div></deta > ils></td></tr><tr><td>9</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(10, > 1009)</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item1</td><td><div > class="dni-plaintext"><pre>10</pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>1009</pre></div></td></tr></tbody></table></div></det > ails></td></tr></tbody></table><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > //// timeout=180000 > > inl { level } = get_trace_state_or_init None > level <- Info > > join dyn listm'.init_series 1i32 100 1 > |> listm.iter fun n => > listm'.init_series 0i32 1 1 > |> listm.iter fun reroll => > join dyn listm'.init_series 1i32 3500 1 > |> listm.map fun _ => roll_progressively roll_dice (reroll = 1) n > |> listm'.group_by id > |> listm.length > |> __assert_eq Silent n > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## main > > ── spiral ────────────────────────────────────────────────────────────────────── > inl main (_args : array_base string) = > inl result = roll_progressively roll_dice true (limit.max : i64) > trace Debug > fun () => "dice.main" > fun () => { result } > 0i32 > > inl main () = > inl rotate_numbers' : i64 -> stream.stream u8 -> stream.stream u8 = > rotate_numbers > > inl create_sequential_roller' : > list u8 > -> (() -> u8) > = > create_sequential_roller > > inl roll_progressively' : > (() -> u8) > -> bool > -> u64 > -> u64 > = > roll_progressively > > inl roll_within_bounds' : > u64 > -> list u8 > -> optionm'.option' u64 > = > fun a b => > roll_within_bounds a b > |> optionm'.box > > $'let rotate_numbers x = !rotate_numbers' x' : () > $'let create_sequential_roller x = !create_sequential_roller' x' : () > $'let roll_progressively x = !roll_progressively' x' : () > $'let roll_within_bounds x = !roll_within_bounds' x' : () > $'let main args = !main args' : () 00:00:46 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 43374 } 00:00:46 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/dice/lib/dice.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/dice/lib/dice.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:47 v #5 ! [NbConvertApp] Converting notebook c:/home/git/dice/lib/dice.dib.ipynb to html 00:00:47 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:47 v #7 ! validate(nb) 00:00:48 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:48 v #9 ! return _pygments_highlight( 00:00:48 v #10 ! [NbConvertApp] Writing 369555 bytes to c:\home\git\dice\lib\dice.dib.html 00:00:48 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 828 } 00:00:48 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 828 } 00:00:48 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/dice/lib/dice.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/dice/lib/dice.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:00:49 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:49 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:49 d #16 spiral.run / dib / { exit_code = 0; result_length = 44261 } 00:00:00 d #1 writeDibCode / output: Spi / path: dice.dib 00:00:00 d #2 parseDibCode / output: Spi / file: dice.dib 00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: dice / hash: / code.Length: 343674 00:00:00 d #2 buildProject / fullPath: c:\home\git\polyglot\target\Builder\dice\dice.fsproj 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "c:/home/git\polyglot\target/Builder\dice\dice.fsproj" --configuration Release --output "C:\home\git\dice\lib\dist" --runtime linux-x64"; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice\dice.fsproj" --configuration Release --output "C:\home\git\dice\lib\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice" } } 00:00:01 v #2 > Determining projects to restore... 00:00:01 v #3 > Paket version 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 00:00:01 v #4 > The last full restore is still up to date. Nothing left to do. 00:00:01 v #5 > Total time taken: 0 milliseconds 00:00:01 v #6 > Paket version 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 00:00:02 v #7 > Restoring c:\home\git\polyglot\target\Builder\dice\dice.fsproj 00:00:02 v #8 > Starting restore process. 00:00:02 v #9 > Total time taken: 0 milliseconds 00:00:02 v #10 > Restored c:\home\git\polyglot\target\Builder\dice\dice.fsproj (in 286 ms). 00:00:18 v #11 > dice -> c:\home\git\polyglot\target\Builder\dice\bin\Release\net9.0\linux-x64\dice.dll 00:00:19 v #12 > dice -> C:\home\git\dice\lib\dist\ 00:00:19 d #13 runtime.execute_with_options_async / { exit_code = 0; output_length = 593; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice\dice.fsproj" --configuration Release --output "C:\home\git\dice\lib\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice" } } 00:00:19 d #14 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "c:/home/git\polyglot\target/Builder\dice\dice.fsproj" --configuration Release --output "C:\home\git\dice\lib\dist" --runtime win-x64"; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice\dice.fsproj" --configuration Release --output "C:\home\git\dice\lib\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice" } } 00:00:19 v #15 > Determining projects to restore... 00:00:20 v #16 > Paket version 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 00:00:20 v #17 > The last full restore is still up to date. Nothing left to do. 00:00:20 v #18 > Total time taken: 0 milliseconds 00:00:22 v #19 > Restored c:\home\git\polyglot\target\Builder\dice\dice.fsproj (in 1.43 sec). 00:00:36 v #20 > dice -> c:\home\git\polyglot\target\Builder\dice\bin\Release\net9.0\win-x64\dice.dll 00:00:37 v #21 > dice -> C:\home\git\dice\lib\dist\ 00:00:37 d #22 runtime.execute_with_options_async / { exit_code = 0; output_length = 402; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice\dice.fsproj" --configuration Release --output "C:\home\git\dice\lib\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice" } } spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: C:\home\git\polyglot\target\Builder\dice polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\dice / ProjectName: dice / Language: rs / Runtime: / root: C:\home\git\polyglot Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) Thanks to the contributor! @halfabench Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\dice\dice.fsproj... Project and references (14 source files) parsed in 2818ms Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Started Fable compilation... Fable compilation finished in 12657ms .\deps\spiral\lib\spiral\common.fsx(2199,0): (2199,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\sm.fsx(561,0): (561,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\crypto.fsx(2426,0): (2426,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\networking.fsx(5050,0): (5050,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\trace.fsx(2232,0): (2232,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\runtime.fsx(7321,0): (7321,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\file_system.fsx(19036,0): (19036,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! dice/lib/build.ps1 / Path: C:\home\git\polyglot\target\Builder\dice/target/rs/dice.rs / Target: dice.rs polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\dice / ProjectName: dice / Language: ts / Runtime: / root: C:\home\git\polyglot Fable 5.0.0-alpha.9: F# to TypeScript compiler Minimum @fable-org/fable-library-ts version (when installed from npm): 1.10.0 Thanks to the contributor! @johannesmols Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\dice\dice.fsproj... Project and references (14 source files) parsed in 83725ms Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Started Fable compilation... Fable compilation finished in 12380ms .\deps\spiral\lib\spiral\sm.fsx(38,20): (38,49) warning FABLE: CultureInfo argument is ignored .\deps\spiral\lib\spiral\sm.fsx(307,20): (307,51) warning FABLE: CultureInfo argument is ignored dice/lib/build.ps1 / Path: C:\home\git\polyglot\target\Builder\dice/target/ts/dice.ts / Target: dice.ts polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\dice / ProjectName: dice / Language: py / Runtime: / root: C:\home\git\polyglot Fable 5.0.0-alpha.9: F# to Python compiler (status: beta) Thanks to the contributor! @jbeeko Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\dice\dice.fsproj... Project and references (14 source files) parsed in 22941ms Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Started Fable compilation... Fable compilation finished in 12242ms .\deps\spiral\lib\spiral\sm.fsx(38,20): (38,49) warning FABLE: CultureInfo argument is ignored .\deps\spiral\lib\spiral\sm.fsx(307,20): (307,51) warning FABLE: CultureInfo argument is ignored dice/lib/build.ps1 / Path: C:\home\git\polyglot\target\Builder\dice/target/py/dice.py / Target: dice.py polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\dice / ProjectName: dice / Language: rs / Runtime: CONTRACT / root: C:\home\git\polyglot Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) Thanks to the contributor! @tpetricek Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\dice\dice.fsproj... Project and references (14 source files) parsed in 21829ms Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Started Fable compilation... Fable compilation finished in 12623ms .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\common.fsx(2199,0): (2199,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\sm.fsx(561,0): (561,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\crypto.fsx(2426,0): (2426,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\networking.fsx(5050,0): (5050,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\trace.fsx(2232,0): (2232,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\runtime.fsx(7321,0): (7321,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\file_system.fsx(19036,0): (19036,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! dice/lib/build.ps1 / Path: C:\home\git\polyglot\target\Builder\dice/target/rs/dice.rs / Target: dice_contract.rs warning: C:\home\git\dice\lib\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: C:\home\git\dice\ui\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: C:\home\git\dice\contract\tests\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: C:\home\git\dice\lib\fsharp\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: C:\home\git\dice\lib\contract\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: C:\home\git\dice\contract\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: C:\home\git\dice\Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. Compiling fable_library_rust v0.1.0 (C:\home\git\dice\deps\polyglot\lib\rust\fable\fable_modules\fable-library-rust) Compiling dice_lib v0.0.1 (C:\home\git\dice\lib) Finished `release` profile [optimized] target(s) in 16.14s Running `C:\home\git\dice\target\release\dice.exe` 00:00:00 d #1 dice.calculate_dice_count / { max = 9223372036854775807; p = 4738381338321616896; n = 24 } 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 23; acc = 0; roll = 6; value = 3948651115268014080 } 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 22; acc = 3948651115268014080; roll = 4; value = 394865111526801408 } 00:00:00 d #4 dice.accumulate_dice_rolls / { power = 21; acc = 4343516226794815488; roll = 4; value = 65810851921133568 } 00:00:00 d #5 dice.accumulate_dice_rolls / { power = 20; acc = 4409327078715949056; roll = 4; value = 10968475320188928 } 00:00:00 d #6 dice.accumulate_dice_rolls / { power = 19; acc = 4420295554036137984; roll = 2; value = 609359740010496 } 00:00:00 d #7 dice.accumulate_dice_rolls / { power = 18; acc = 4420904913776148480; roll = 3; value = 203119913336832 } 00:00:00 d #8 dice.accumulate_dice_rolls / { power = 17; acc = 4421108033689485312; roll = 3; value = 33853318889472 } 00:00:00 d #9 dice.accumulate_dice_rolls / { power = 16; acc = 4421141887008374784; roll = 5; value = 11284439629824 } 00:00:00 d #10 dice.accumulate_dice_rolls / { power = 15; acc = 4421153171448004608; roll = 3; value = 940369969152 } 00:00:00 d #11 dice.accumulate_dice_rolls / { power = 14; acc = 4421154111817973760; roll = 5; value = 313456656384 } 00:00:00 d #12 dice.accumulate_dice_rolls / { power = 13; acc = 4421154425274630144; roll = 2; value = 13060694016 } 00:00:00 d #13 dice.accumulate_dice_rolls / { power = 12; acc = 4421154438335324160; roll = 5; value = 8707129344 } 00:00:00 d #14 dice.accumulate_dice_rolls / { power = 11; acc = 4421154447042453504; roll = 4; value = 1088391168 } 00:00:00 d #15 dice.accumulate_dice_rolls / { power = 10; acc = 4421154448130844672; roll = 3; value = 120932352 } 00:00:00 d #16 dice.accumulate_dice_rolls / { power = 9; acc = 4421154448251777024; roll = 4; value = 30233088 } 00:00:00 d #17 dice.accumulate_dice_rolls / { power = 8; acc = 4421154448282010112; roll = 6; value = 8398080 } 00:00:00 d #18 dice.accumulate_dice_rolls / { power = 7; acc = 4421154448290408192; roll = 5; value = 1119744 } 00:00:00 d #19 dice.accumulate_dice_rolls / { power = 6; acc = 4421154448291527936; roll = 5; value = 186624 } 00:00:00 d #20 dice.accumulate_dice_rolls / { power = 5; acc = 4421154448291714560; roll = 4; value = 23328 } 00:00:00 d #21 dice.accumulate_dice_rolls / { power = 4; acc = 4421154448291737888; roll = 4; value = 3888 } 00:00:00 d #22 dice.accumulate_dice_rolls / { power = 3; acc = 4421154448291741776; roll = 6; value = 1080 } 00:00:00 d #23 dice.accumulate_dice_rolls / { power = 2; acc = 4421154448291742856; roll = 1 } 00:00:00 d #24 dice.accumulate_dice_rolls / { power = 1; acc = 4421154448291742856; roll = 1 } 00:00:00 d #25 dice.accumulate_dice_rolls / { power = 0; acc = 4421154448291742856; roll = 4; value = 3 } 00:00:00 d #26 dice.accumulate_dice_rolls / { power = -1; acc = 4421154448291742859; result = 4421154448291742860 } 00:00:00 d #27 dice.main / { result = 4421154448291742860 } dice/lib/build.ps1 / $targetDir = C:\home\git\polyglot\target\Builder\dice / $projectName: dice / $env:CI:'' 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "C:\home\git\dice\contract/dice_contract.dib", "--retries", "1"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/dice/contract/dice_contract.dib", "--output-path", "c:/home/git/dice/contract/dice_contract.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/dice/contract/dice_contract.dib" --output-path "c:/home/git/dice/contract/dice_contract.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # dice_contract > > ── spiral ────────────────────────────────────────────────────────────────────── > //// package=../dice > > open rust > open rust.rust_operators > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > open testing > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## dice_contract > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### state > > ── spiral ────────────────────────────────────────────────────────────────────── > type state = > { > version : u32 > seeds : near.vector u8 > } > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -c > > () > > ── [ 44.47s - return value ] ─────────────────────────────────────────────────── > │ > │ 00:00:09 i #2 near_workspaces.print_usd / { retry = 1; > total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209371440851 } > │ 00:00:09 i #3 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:09 i #4 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; > gas_burnt = 901289581511; tokens_burnt = 90128958151100000000 } > │ 00:00:09 w #5 spiral_wasm.run / Error error / { retry = > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" } > │ > │ > │ > │ 00:00:16 i #8 near_workspaces.print_usd / { retry = 2; > total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209371440851 } > │ 00:00:16 i #9 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:16 i #10 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; > gas_burnt = 901289581511; tokens_burnt = 90128958151100000000 } > │ 00:00:16 w #11 spiral_wasm.run / Error error / { retry > = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" } > │ > │ > │ > │ 00:00:22 i #14 near_workspaces.print_usd / { retry = 3; > total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209371440851 } > │ 00:00:22 i #15 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:22 i #16 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; > gas_burnt = 901289581511; tokens_burnt = 90128958151100000000 } > │ 00:00:22 w #17 spiral_wasm.run / Error error / { retry > = 3; error = "{ receipt_outcomes_len = 1; retry = 3; receipt_failures = [] }" } > │ > │ > │ > │ 00:00:28 i #20 near_workspaces.print_usd / { retry = 4; > total_gas_burnt_usd = +0.000957; total_gas_burnt = 1432554003351 } > │ 00:00:28 i #21 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:28 i #22 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; > gas_burnt = 901289581511; tokens_burnt = 90128958151100000000 } > │ 00:00:28 i #23 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -c > > trace Verbose (fun () => "") id > > ── [ 37.47s - return value ] ─────────────────────────────────────────────────── > │ > │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1; > total_gas_burnt_usd = +0.000884; total_gas_burnt = 1323849918887 } > │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000679; tokens_burnt_usd = +0.000679; > gas_burnt = 1015768059547; tokens_burnt = 101576805954700000000 } > │ 00:00:06 w #5 spiral_wasm.run / Error error / { retry = > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" } > │ > │ > │ > │ 00:00:13 i #8 near_workspaces.print_usd / { retry = 2; > total_gas_burnt_usd = +0.000884; total_gas_burnt = 1323849918887 } > │ 00:00:13 i #9 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:13 i #10 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000679; tokens_burnt_usd = +0.000679; > gas_burnt = 1015768059547; tokens_burnt = 101576805954700000000 } > │ 00:00:13 w #11 spiral_wasm.run / Error error / { retry > = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" } > │ > │ > │ > │ 00:00:20 i #14 near_workspaces.print_usd / { retry = 3; > total_gas_burnt_usd = +0.000884; total_gas_burnt ...r = "{ receipt_outcomes_len > = 1; retry = 3; receipt_failures = [] }" } > │ > │ > │ > │ 00:00:26 i #20 near_workspaces.print_usd / { retry = 4; > total_gas_burnt_usd = +0.000884; total_gas_burnt = 1323849918887 } > │ 00:00:26 i #21 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:26 i #22 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000679; tokens_burnt_usd = +0.000679; > gas_burnt = 1015768059547; tokens_burnt = 101576805954700000000 } > │ 00:00:26 w #23 spiral_wasm.run / Error error / { retry > = 4; error = "{ receipt_outcomes_len = 1; retry = 4; receipt_failures = [] }" } > │ > │ > │ > │ 00:00:32 i #26 near_workspaces.print_usd / { retry = 5; > total_gas_burnt_usd = +0.001033; total_gas_burnt = 1547032481387 } > │ 00:00:32 i #27 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:32 i #28 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000679; tokens_burnt_usd = +0.000679; > gas_burnt = 1015768059547; tokens_burnt = 101576805954700000000 } > │ 00:00:32 i #29 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### new > > ── spiral ────────────────────────────────────────────────────────────────────── > inl new () : state = > { > version = 2 > seeds = "seeds" |> sm'.byte_slice |> near.new_vector > } > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -c > > inl state = new () > trace Verbose (fun () => "dice_contract") fun () => { state = state |> > sm'.format_debug } > trace Verbose (fun () => "") id > > ── [ 21.53s - return value ] ─────────────────────────────────────────────────── > │ 00:00:00 v #1 dice_contract / { state = (2, Vector { > len: 0, prefix: [115, 101, 101, 100, 115] }) } > │ > │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1; > total_gas_burnt_usd = +0.001220; total_gas_burnt = 1825868853775 } > │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000865; tokens_burnt_usd = +0.000865; > gas_burnt = 1294604431935; tokens_burnt = 129460443193500000000 } > │ 00:00:06 i #5 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### max_seeds > > ── spiral ────────────────────────────────────────────────────────────────────── > inl max_seeds () : unativeint = > 100i32 |> convert > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### contribute_seed > > ── spiral ────────────────────────────────────────────────────────────────────── > inl contribute_seed (seeds : rust.ref (rust.mut' (near.vector u8))) (seed : > am'.vec u8) : () = > seeds |> near.vector_extend seed > > inl seed_excess_len = (seeds |> rust.len |> fun x => x : u32 |> i32) - > (max_seeds () |> i32) > > if seed_excess_len > 0 then > inl seed_excess : am'.vec u8 = > !\\(seed_excess_len, $'"!seeds.drain(0..$0 as > u32).collect::<Vec<_>>()"') > trace Debug > fun () => "dice_contract.contribute_seed" > fun () => { seed_excess_len seed_excess = seed_excess |> > sm'.format_debug } > trace Debug (fun () => "") (join id) > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -c > > inl replicate n = > let rec loop i acc = > if i > n > then acc > else > inl i' = i % 10 > inl i' = > if i' = 0 > then i % limit.max > else i' > loop (i + 1) (i' :: acc) > loop 1 [[]] > |> listm.rev > |> listm'.box > |> listm'.to_array' > > inl max_seeds : u32 = max_seeds () |> convert > inl seeds = "" |> sm'.byte_slice |> near.new_vector |> rust.to_ref_mut > > conv max_seeds * 1.2f64 > |> replicate > |> am'.map_base u8 > |> am'.to_vec > |> contribute_seed seeds > > seeds > |> rust.len > |> _assert_eq max_seeds > > ── [ 32.72s - return value ] ─────────────────────────────────────────────────── > │ 00:00:00 d #1 dice_contract.contribute_seed / { > seed_excess_len = 20; seed_excess = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, > 5, 6, 7, 8, 9, 20] } > │ > │ 00:00:06 i #2 near_workspaces.print_usd / { retry = 1; > total_gas_burnt_usd = +0.007478; total_gas_burnt = 11194173284004 } > │ 00:00:06 i #3 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:06 i #4 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.007272; tokens_burnt_usd = +0.007272; > gas_burnt = 10886091424664; tokens_burnt = 1088609142466400000000 } > │ 00:00:06 w #5 spiral_wasm.run / Error error / { retry = > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" } > │ > │ > │ 00:00:00 d #1 dice_contract.contribute_seed / { > seed_excess_len = 20; seed_excess = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, > 5, 6, 7, 8, 9, 20] } > │ > │ 00:00:14 i #8 near_workspaces.print_usd / { retry = 2; > total_gas_burnt_usd = +0.007627; total_gas_burnt = 11417355846504 } > │ 00:00:14 i #9 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:14 i #10 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.007272; tokens_burnt_usd = +0.007272; > gas_burnt = 10886091424664; tokens_burnt = 1088609142466400000000 } > │ 00:00:14 i #11 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### generate_random_number > > ── spiral ────────────────────────────────────────────────────────────────────── > inl generate_random_number > (seeds : rust.ref (rust.mut' (near.vector u8))) > (key : sm'.std_string) > (proof : sm'.std_string) > (max : u64) > : u64 > = > inl seed = near.random_seed () > inl epoch_height = near.epoch_height () > inl block_height = near.block_height () > inl block_timestamp = near.block_timestamp () > inl account_balance = near.account_balance () > inl signer_account_id = near.signer_account_id () > inl predecessor_account_id = near.predecessor_account_id () > inl entropy = > ;[[ > seed > seeds |> rust.reref |> near.vector_to_vec > epoch_height |> am'.to_le_bytes |> am'.to_vec' > block_height |> am'.to_le_bytes |> am'.to_vec' > block_timestamp |> am'.to_le_bytes |> am'.to_vec' > account_balance |> near.as_yoctonear |> am'.to_le_bytes |> > am'.to_vec' > signer_account_id |> am'.as_bytes |> am'.to_vec'' > predecessor_account_id |> am'.as_bytes |> am'.to_vec'' > proof |> sm'.into_bytes > key |> sm'.into_bytes > ]] > |> am'.to_vec > |> rust.concat > inl hash_u8 = entropy |> near.keccak512 > hash_u8 |> contribute_seed seeds > inl rolls_list = > hash_u8 > |> am'.from_vec_base > |> am'.to_list_base' > |> listm'.unbox > |> stream.from_list > |> lib.dice.rotate_numbers 6 > |> stream.to_list > trace Debug > fun () => "dice_contract.generate_random_number" > fun () => { > max > key > proof > block_timestamp > block_height > epoch_height > account_balance = account_balance |> sm'.format_debug > signer_account_id = signer_account_id |> sm'.to_string' > predecessor_account_id = predecessor_account_id |> sm'.to_string' > seed = seed |> sm'.format_debug > seeds = seeds |> sm'.format_debug > entropy_len = entropy |> am'.vec_len > entropy = entropy |> sm'.format_debug > hash_u8 = hash_u8 |> sm'.format_debug > rolls = rolls_list |> listm'.box |> listm'.to_array' |> am'.to_vec > |> sm'.format_debug > } > inl sequential_roll = rolls_list |> lib.dice.create_sequential_roller > inl result = lib.dice.roll_progressively sequential_roll true max > trace Debug (fun () => "") (join id) > result > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -cd near-token > > 2000 > |> generate_random_number > ("" |> sm'.byte_slice |> near.new_vector |> rust.to_ref_mut) > ("" |> sm'.to_std_string) > ("" |> sm'.to_std_string) > |> _assert_gt 0 > > ── [ 29.75s - return value ] ─────────────────────────────────────────────────── > │ 00:00:00 d #2 dice_contract.generate_random_number / { > max = 2000; key = ""; proof = ""; block_timestamp = 1743244846576479856; > block_height = 9; epoch_height = 1; account_balance = NearToken { inner: > 99817379736552383587979200 }; signer_account_id = > "dev-20250329104045-76001641287929"; predecessor_account_id = > "dev-20250329104045-76001641287929"; seed = [52, 231, 253, 29, 44, 46, 174, 121, > 232, 104, 205, 17, 3, 178, 6, 124, 7, 91, 221, 215, 46, 136, 24, 153, 7, 107, > 81, 144, 171, 159, 212, 253]; seeds = Vector { len: 64, prefix: [] }; > entropy_len = 138; entropy = [52, 231, 253, 29, 44, 46, 174, 121, 232, 104, 205, > 17, 3, 178, 6, 124, 7, 91, 221, 215, 46, 136, 24, 153, 7, 107, 81, 144, 171, > 159, 212, 253, 1, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 112, 174, 184, > 172, 243, 63, 49, 24, 192, 143, 230, 30, 215, 18, 132, 255, 38, 145, 82, 0, 0, > 0, 0, 0, 100, 101, 118, 45, 50, 48, 50, 53, 48, 51, 50, 57, 49, 48, 52, 48, 52, > 53, 45, 55, 54, 48, 48, 49, 54, 52, 49, 50, 56, 55, 57, 50, 57, 100, 101, 118, > 45, 50, 48, 50, 53, 48, 51, 50, 57, 49, 48, 52, 48, 52, 53, 45, 55, 54, 48, 48, > 49, 54, 52, 49, 50, 56, 55, 57, 50, 57]; hash_u8 = [155, 75, 140, 255, 117, 158, > 10, 175, 36, 200, 19, 110, 250, 161, 233, 77, 172, 251, 116, 54, 115, 72, 242, > 99, 152, 125, 71, 90, 0, 240, 134, 91, 154, 59, 103, 58, 195, 220, 234, 22, 101, > 44, 25, 22, 112, 130, 130, 64, 158, 46, 70, 162, 19, 83, 249, 89, 21, 201, 122, > 210, 139, 151, 194, 214]; rolls = [5, 3, 2, 3, 3, 2, 4, 1, 6, 2, 1, 2, 4...x = > 8; acc = 1; len = -1; last_item = Some(1) } > │ 00:00:00 d #19 dice.create_sequential_roller / roll / { > current_index = 9; acc = 1; len = -1; last_item = Some(6) } > │ 00:00:00 d #20 dice.accumulate_dice_rolls / { power = > 4; acc = 0; roll = 2; value = 1296 } > │ 00:00:00 d #21 dice.accumulate_dice_rolls / { power = > 3; acc = 1296; roll = 2; value = 216 } > │ 00:00:00 d #22 dice.accumulate_dice_rolls / { power = > 2; acc = 1512; roll = 4; value = 108 } > │ 00:00:00 d #23 dice.accumulate_dice_rolls / { power = > 1; acc = 1620; roll = 1 } > │ 00:00:00 d #24 dice.accumulate_dice_rolls / { power = > 0; acc = 1620; roll = 6; value = 5 } > │ 00:00:00 d #25 dice.accumulate_dice_rolls / { power = > -1; acc = 1625; result = 1626 } > │ > │ 00:00:07 i #2 near_workspaces.print_usd / { retry = 1; > total_gas_burnt_usd = +0.030685; total_gas_burnt = 45936270928961 } > │ 00:00:07 i #3 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:07 i #4 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.030331; tokens_burnt_usd = +0.030331; > gas_burnt = 45405006507121; tokens_burnt = 4540500650712100000000 } > │ 00:00:07 i #5 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### roll_within_bounds > > ── spiral ────────────────────────────────────────────────────────────────────── > inl roll_within_bounds (max : u64) (rolls : am'.vec u8) : optionm'.option' u64 = > inl result = > rolls > |> am'.from_vec_base > |> am'.to_list_base' > |> listm'.unbox > |> lib.dice.roll_within_bounds max > |> optionm'.box > trace Debug > fun () => "dice_contract.roll_within_bounds" > fun () => { max rolls = rolls |> sm'.format_debug; result = result |> > sm'.format_debug } > trace Debug (fun () => "") (join id) > result > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -c > > inl rolls = ;[[ 1; 5; 4; 4; 5 ]] |> am'.to_vec > > rolls > |> roll_within_bounds 2000 > |> _assert_eq' (optionm'.some' 995) > > ── [ 26.76s - return value ] ─────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 4; > acc = 0; roll = 1 } > │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 3; > acc = 0; roll = 5; value = 864 } > │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 2; > acc = 864; roll = 4; value = 108 } > │ 00:00:00 d #4 dice.accumulate_dice_rolls / { power = 1; > acc = 972; roll = 4; value = 18 } > │ 00:00:00 d #5 dice.accumulate_dice_rolls / { power = 0; > acc = 990; roll = 5; value = 4 } > │ 00:00:00 d #6 dice.accumulate_dice_rolls / { power = > -1; acc = 994; result = 995 } > │ 00:00:00 d #7 dice_contract.roll_within_bounds / { max > = 2000; rolls = [1, 5, 4, 4, 5]; result = Some(995) } > │ > │ 00:00:07 i #2 near_workspaces.print_usd / { retry = 1; > total_gas_burnt_usd = +0.003143; total_gas_burnt = 4704513102015 } > │ 00:00:07 i #3 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:07 i #4 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.002788; tokens_burnt_usd = +0.002788; > gas_burnt = 4173248680175; tokens_burnt = 417324868017500000000 } > │ 00:00:07 i #5 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -c > > inl rolls = ;[[ 2; 2; 6; 4; 5 ]] |> am'.to_vec > > rolls > |> roll_within_bounds 2000 > |> _assert_eq' (optionm'.some' 1715) > > ── [ 53.65s - return value ] ─────────────────────────────────────────────────── > │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 4; > acc = 0; roll = 2; value = 1296 } > │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 3; > acc = 1296; roll = 2; value = 216 } > │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 2; > acc = 1512; roll = 6; value = 180 } > │ 00:00:00 d #4 dice.accumulate_dice_rolls / { power = 1; > acc = 1692; roll = 4; value = 18 } > │ 00:00:00 d #5 dice.accumulate_dice_rolls / { power = 0; > acc = 1710; roll = 5; value = 4 } > │ 00:00:00 d #6 dice.accumulate_dice_rolls / { power = > -1; acc = 1714; result = 1715 } > │ 00:00:00 d #7 dice_contract.roll_within_bounds / { max > = 2000; rolls = [2, 2, 6, 4, 5]; result = Some(1715) } > │ > │ 00:00:07 i #2 near_workspaces.print_usd / { retry = 1; > total_gas_burnt_usd = +0.003069; total_gas_burnt = 4594626769596 } > │ 00:00:07 i #3 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:07 i #4 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.002863; tokens_burnt_usd = +0.002863; > gas_burnt = 4286544910256; tokens_burnt = 428654491025600000000 } > │ 00:00:07 w #5 spiral_wasm.run / Error error / { retry = > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" } > │ > │ > │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 4; > acc = 0; roll = 2; valu...n = 1; retry = 4; receipt_failures = [] }" } > │ > │ > │ 00:00:00 d #1 dice.accumulate_dice_rolls / { power = 4; > acc = 0; roll = 2; value = 1296 } > │ 00:00:00 d #2 dice.accumulate_dice_rolls / { power = 3; > acc = 1296; roll = 2; value = 216 } > │ 00:00:00 d #3 dice.accumulate_dice_rolls / { power = 2; > acc = 1512; roll = 6; value = 180 } > │ 00:00:00 d #4 dice.accumulate_dice_rolls / { power = 1; > acc = 1692; roll = 4; value = 18 } > │ 00:00:00 d #5 dice.accumulate_dice_rolls / { power = 0; > acc = 1710; roll = 5; value = 4 } > │ 00:00:00 d #6 dice.accumulate_dice_rolls / { power = > -1; acc = 1714; result = 1715 } > │ 00:00:00 d #7 dice_contract.roll_within_bounds / { max > = 2000; rolls = [2, 2, 6, 4, 5]; result = Some(1715) } > │ > │ 00:00:34 i #26 near_workspaces.print_usd / { retry = 5; > total_gas_burnt_usd = +0.003218; total_gas_burnt = 4817809332096 } > │ 00:00:34 i #27 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:34 i #28 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.002863; tokens_burnt_usd = +0.002863; > gas_burnt = 4286544910256; tokens_burnt = 428654491025600000000 } > │ 00:00:34 i #29 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### main > > ── spiral ────────────────────────────────────────────────────────────────────── > ///! _ > > inl main () = > !\($'"} //"') : () > > !\($'"#[[derive( //"') : () > !\($'" near_sdk::PanicOnDefault, //"') : () > !\($'" borsh::BorshDeserialize, //"') : () > !\($'" borsh::BorshSerialize, //"') : () > !\($'")]] //"') : () > > !\($'"pub struct OldState { //"') : () > !\($'" version: u32, //"') : () > !\($'" seeds: near_sdk::store::vec::Vector<u8>, //"') : () > !\($'"} //"') : () > > !\($'"#[[near_sdk::near_bindgen]] //"') : () > > !\($'"#[[derive( //"') : () > !\($'" near_sdk::PanicOnDefault, //"') : () > !\($'" borsh::BorshDeserialize, //"') : () > !\($'" borsh::BorshSerialize, //"') : () > !\($'")]] //"') : () > > !\($'"pub struct State ( //"') : () > > !\($'"/*"') : () > (null () : rust.type_emit state) |> ignore > !\($'"*/ )"') : () > > !\($'"impl From<OldState> for State { //"') : () > !\($'" fn from(old_state: OldState) -> Self { //"') : () > !\($'" Self((old_state.version + 1, old_state.seeds)) //"') : () > !\($'" } //"') : () > !\($'"} //"') : () > > inl new_ () = > !\($'"#[[init]] //"') : () > !\($'"pub fn new() -> Self { // 1"') : () > > (!\($'"true; /*"') : bool) |> ignore > > (null () : rust.type_emit ()) |> ignore > > (!\($'"true; */"') : bool) |> ignore > > inl result = new () > $'let _result = !result in _result |> (fun x -> > Fable.Core.RustInterop.emitRustExpr x $"Self($0) // x") // 2' : () > > !\($'"} // 2."') : () > > !\($'"} // 1."') : () > > 2 > > inl contribute_seed () = > !\($'"pub fn contribute_seed(&mut self, seed: Vec<u8>) { //"') : () > inl seeds : rust.ref (rust.mut' (near.vector u8)) = !\($'$"&mut > self.0.1"') > inl seed : am'.vec u8 = !\($'$"seed"') > > seed |> contribute_seed seeds > > !\($'"} //"') : () > > !\($'"} //"') : () > > !\($'"} //"') : () > > 3 > > inl contribute_seed_borsh () = > !\($'"pub fn contribute_seed_borsh(&mut self, #[[serializer(borsh)]] > seed: Vec<u8>) { //"') : () > !\($'" self.contribute_seed(seed) //"') : () > !\($'"} //"') : () > > 1 > > inl generate_random_number () = > !\($'"pub fn generate_random_number(&mut self, key: String, proof: > String, max: u64) -> u64 { //"') : () > > inl key : sm'.std_string = !\($'$"key"') > inl proof : sm'.std_string = !\($'$"proof"') > inl max : u64 = !\($'$"max"') > > inl seeds : rust.ref (rust.mut' (near.vector u8)) = !\($'$"&mut > self.0.1"') > > inl result = generate_random_number seeds key proof max > > !\($'"!result //"') : () > > !\($'"} //"') : () > > !\($'"} //"') : () > > !\($'"} //"') : () > > 3 > > inl roll_within_bounds () = > !\($'"pub fn roll_within_bounds(&self, max: u64, rolls: Vec<u8>) -> > Option<u64> { //"') : () > inl max : u64 = !\($'$"max"') > inl rolls : am'.vec u8 = !\($'$"rolls"') > inl result = roll_within_bounds max rolls > > !\\(result, $'"$0 //"') : () > > !\($'"} //"') : () > > !\($'"} //"') : () > > 2 > > inl roll_within_bounds_borsh () = > !\($'"#[[result_serializer(borsh)]] //"') : () > !\($'"pub fn roll_within_bounds_borsh( //"') : () > !\($'" &self, //"') : () > !\($'" #[[serializer(borsh)]] max: u64, //"') : () > !\($'" #[[serializer(borsh)]] rolls: Vec<u8>, //"') : () > !\($'") -> Option<u64> { //"') : () > !\($'" self.roll_within_bounds(max, rolls) //"') : () > !\($'"} //"') : () > > 1 > > > inl fns = > [[ > new_ > contribute_seed > contribute_seed_borsh > generate_random_number > roll_within_bounds > roll_within_bounds_borsh > ]] > > inl rec loop acc fns i = > match fns with > | [[]] => acc > | x :: xs => > !\($'"#[[near_sdk::near_bindgen]] //"') : () > !\($'"impl State { //"') : () > inl n = x () > !\($'"} /* c"') : () > inl rec loop' i' = > if i' <> 1 // <= n > then (!\($'"true; */ // ???? / i: !i / i\': !i' / acc: !acc / n: > !n"') : bool) |> ignore > else > (!\($'"true; // ??? / i: !i / i\': !i' / acc: !acc / n: > !n"') : bool) |> ignore > loop' (i' + 1) > loop' 1u8 > loop (acc + n) xs (i + 1) > inl n = loop 0u8 fns 1u8 > > > // !\($'"/* a"') : () > > // !\($'"} // b"') : () > > !\($'"fn _main() //"') : () > !\($'" //"') : () > > inl rec loop' i' = > if i' <= n > then > (!\($'"true; { (); // ?? / i\': !i' / n: !n"') : bool) |> ignore > loop' (i' + 1) > else > (!\($'"true; { { (); // ? / i\': !i' / n: !n"') : bool) |> ignore > // (!\($'"true; */ // ?? / i\': !i' / n: !n"') : bool) |> ignore > loop' 1u8 > > inl main () = > $'!main |> ignore' : () 00:04:17 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 32171 } 00:04:17 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "c:/home/git/dice/contract/dice_contract.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "c:/home/git/dice/contract/dice_contract.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:19 v #5 ! [NbConvertApp] Converting notebook c:/home/git/dice/contract/dice_contract.dib.ipynb to html 00:04:19 v #6 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbformat\__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:04:19 v #7 ! validate(nb) 00:04:20 v #8 ! C:\Users\i574n\scoop\apps\python312\current\Lib\site-packages\nbconvert\filters\highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:04:20 v #9 ! return _pygments_highlight( 00:04:20 v #10 ! [NbConvertApp] Writing 360110 bytes to c:\home\git\dice\contract\dice_contract.dib.html 00:04:20 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 856 } 00:04:20 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 856 } 00:04:20 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = 'c:/home/git/dice/contract/dice_contract.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = 'c:/home/git/dice/contract/dice_contract.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None } } 00:04:21 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:04:21 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:04:21 d #16 spiral.run / dib / { exit_code = 0; result_length = 33086 } 00:00:00 d #1 writeDibCode / output: Spi / path: dice_contract.dib 00:00:00 d #2 parseDibCode / output: Spi / file: dice_contract.dib 00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: dice_contract / hash: / code.Length: 170197 00:00:00 d #2 buildProject / fullPath: c:\home\git\polyglot\target\Builder\dice_contract\dice_contract.fsproj 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "c:/home/git\polyglot\target/Builder\dice_contract\dice_contract.fsproj" --configuration Release --output "C:\home\git\dice\contract\dist" --runtime linux-x64"; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice_contract\dice_contract.fsproj" --configuration Release --output "C:\home\git\dice\contract\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice_contract" } } 00:00:01 v #2 > Determining projects to restore... 00:00:01 v #3 > Paket version 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 00:00:01 v #4 > The last full restore is still up to date. Nothing left to do. 00:00:01 v #5 > Total time taken: 0 milliseconds 00:00:02 v #6 > Restored c:\home\git\polyglot\target\Builder\dice_contract\dice_contract.fsproj (in 310 ms). 00:00:14 v #7 > dice_contract -> c:\home\git\polyglot\target\Builder\dice_contract\bin\Release\net9.0\linux-x64\dice_contract.dll 00:00:16 v #8 > dice_contract -> C:\home\git\dice\contract\dist\ 00:00:16 d #9 runtime.execute_with_options_async / { exit_code = 0; output_length = 461; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice_contract\dice_contract.fsproj" --configuration Release --output "C:\home\git\dice\contract\dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice_contract" } } 00:00:16 d #10 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "c:/home/git\polyglot\target/Builder\dice_contract\dice_contract.fsproj" --configuration Release --output "C:\home\git\dice\contract\dist" --runtime win-x64"; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice_contract\dice_contract.fsproj" --configuration Release --output "C:\home\git\dice\contract\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice_contract" } } 00:00:17 v #11 > Determining projects to restore... 00:00:17 v #12 > Paket version 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 00:00:17 v #13 > The last full restore is still up to date. Nothing left to do. 00:00:17 v #14 > Total time taken: 0 milliseconds 00:00:18 v #15 > Restored c:\home\git\polyglot\target\Builder\dice_contract\dice_contract.fsproj (in 290 ms). 00:00:31 v #16 > dice_contract -> c:\home\git\polyglot\target\Builder\dice_contract\bin\Release\net9.0\win-x64\dice_contract.dll 00:00:33 v #17 > dice_contract -> C:\home\git\dice\contract\dist\ 00:00:33 d #18 runtime.execute_with_options_async / { exit_code = 0; output_length = 459; options = { command = dotnet publish "c:/home/git\polyglot\target/Builder\dice_contract\dice_contract.fsproj" --configuration Release --output "C:\home\git\dice\contract\dist" --runtime win-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "c:\home\git\polyglot\target\Builder\dice_contract" } } spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: C:\home\git\polyglot\target\Builder\dice_contract polyglot/scripts/core.ps1/ResolveLink #4 / Path: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral/../../deps/polyglot / parent_target: / path_target: C:\home\git\polyglot / parent: C:\home\git\dice\deps\polyglot\deps\spiral\lib\spiral\..\..\deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: C:\home\git\polyglot\target\Builder\dice_contract / ProjectName: dice_contract / Language: rs / Runtime: CONTRACT / root: C:\home\git\polyglot Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) Thanks to the contributor! @Shmew Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target\Builder\dice_contract\dice_contract.fsproj... Project and references (14 source files) parsed in 2945ms Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan C:/Program Files/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Started Fable compilation... Fable compilation finished in 11510ms .\deps\spiral\lib\spiral\async_.fsx(250,0): (250,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\sm.fsx(561,0): (561,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\common.fsx(2199,0): (2199,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\crypto.fsx(2426,0): (2426,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\date_time.fsx(2546,0): (2546,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\platform.fsx(121,0): (121,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\networking.fsx(5050,0): (5050,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\trace.fsx(2232,0): (2232,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\runtime.fsx(7321,0): (7321,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\deps\spiral\lib\spiral\file_system.fsx(19036,0): (19036,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! .\target\Builder\dice_contract\dice_contract.fs(4306,6): (4306,12) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! dice/contract/build.ps1 / path: C:\home\git\polyglot\target\Builder\dice_contract/target/rs/dice_contract.rs Compiling fable_library_rust v0.1.0 (C:\home\git\dice\deps\polyglot\lib\rust\fable\fable_modules\fable-library-rust) Compiling dice_contract_lib v0.0.1 (C:\home\git\dice\lib\contract) Compiling dice_contract v0.0.1 (C:\home\git\dice\contract) Finished `release` profile [optimized] target(s) in 19.77s dice/contract/build.ps1 / $targetDir = C:\home\git\polyglot\target\Builder\dice_contract / $projectName: dice_contract / $env:CI:'' warning: /mnt/c/home/git/dice/contract/tests/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /mnt/c/home/git/dice/lib/fsharp/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /mnt/c/home/git/dice/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /mnt/c/home/git/dice/contract/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /mnt/c/home/git/dice/lib/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /mnt/c/home/git/dice/ui/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /mnt/c/home/git/dice/lib/contract/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. Compiling proc-macro2 v1.0.89 Compiling libc v0.2.162 Compiling serde v1.0.215 Compiling typenum v1.17.0 Compiling lock_api v0.4.12 Compiling generic-array v0.14.7 Compiling parking_lot_core v0.9.10 Compiling slab v0.4.9 Compiling syn v1.0.109 Compiling num-traits v0.2.19 Compiling crossbeam-utils v0.8.20 Compiling thiserror v1.0.69 Compiling rustversion v1.0.18 Compiling serde_json v1.0.132 Compiling semver v1.0.23 Compiling borsh v1.5.3 Compiling httparse v1.9.5 Compiling quote v1.0.37 Compiling syn v2.0.87 Compiling num-integer v0.1.46 Compiling rustc_version v0.4.1 Compiling crossbeam-channel v0.5.13 Compiling signal-hook-registry v1.4.2 Compiling getrandom v0.2.15 Compiling mio v1.0.2 Compiling parking_lot v0.12.3 Compiling socket2 v0.5.7 Compiling rand_core v0.6.4 Compiling num-bigint v0.3.3 Compiling indexmap v1.9.3 Compiling curve25519-dalek v4.1.3 Compiling axum-core v0.3.4 Compiling crunchy v0.2.2 Compiling axum v0.6.20 Compiling crypto-common v0.1.6 Compiling ordered-float v4.5.0 Compiling concurrent-queue v2.5.0 Compiling openssl-sys v0.9.104 Compiling rustix v0.38.40 Compiling protobuf v2.28.0 Compiling block-buffer v0.10.4 Compiling zstd-safe v7.2.1 Compiling prometheus v0.13.4 Compiling digest v0.10.7 Compiling synstructure v0.13.1 Compiling serde_derive_internals v0.29.1 Compiling darling_core v0.20.10 Compiling serde_derive v1.0.215 Compiling zerofrom-derive v0.1.4 Compiling yoke-derive v0.7.4 Compiling tokio-macros v2.4.0 Compiling tracing-attributes v0.1.27 Compiling zerovec-derive v0.10.3 Compiling tokio v1.41.1 Compiling displaydoc v0.2.5 Compiling futures-macro v0.3.31 Compiling zerocopy-derive v0.7.35 Compiling tracing v0.1.40 Compiling icu_provider_macros v1.5.0 Compiling thiserror-impl v1.0.69 Compiling borsh-derive v1.5.3 Compiling futures-util v0.3.31 Compiling sha2 v0.10.8 Compiling zerocopy v0.7.35 Compiling ppv-lite86 v0.2.20 Compiling zerofrom v0.1.4 Compiling yoke v0.7.4 Compiling async-trait v0.1.83 Compiling rand_chacha v0.3.1 Compiling zerovec v0.10.4 Compiling rand v0.8.5 Compiling tokio-util v0.7.12 Compiling tinystr v0.7.6 Compiling indexmap v2.6.0 Compiling hex v0.4.3 Compiling icu_locid v1.5.0 Compiling deranged v0.3.11 Compiling pin-project-internal v1.1.7 Compiling serde_repr v0.1.19 Compiling time v0.3.36 Compiling icu_provider v1.5.0 Compiling h2 v0.3.26 Compiling icu_collections v1.5.0 Compiling futures-executor v0.3.31 Compiling tracing-subscriber v0.3.18 Compiling icu_locid_transform v1.5.0 Compiling near-account-id v1.0.0 Compiling tokio-stream v0.1.16 Compiling pin-project v1.1.7 Compiling derive_arbitrary v1.4.1 Compiling enum-map-derive v0.17.0 Compiling curve25519-dalek-derive v0.1.1 Compiling derive_more v0.99.18 Compiling icu_properties v1.5.1 Compiling arbitrary v1.4.1 Compiling enum-map v2.7.3 Compiling tower v0.4.13 Compiling hyper v0.14.31 Compiling num-rational v0.3.2 Compiling icu_normalizer v1.5.0 Compiling tokio-io-timeout v1.2.0 Compiling opentelemetry v0.22.0 Compiling block-padding v0.3.3 Compiling strum_macros v0.24.3 Compiling prost-derive v0.12.6 Compiling async-stream-impl v0.3.6 Compiling near-primitives-core v0.23.0 Compiling opentelemetry_sdk v0.22.1 Compiling idna_adapter v1.2.0 Compiling inout v0.1.3 Compiling ed25519-dalek v2.1.1 Compiling async-stream v0.3.6 Compiling hyper-timeout v0.4.1 Compiling strum v0.24.1 Compiling uint v0.9.5 Compiling prost v0.12.6 Compiling schemars_derive v0.8.21 Compiling openssl-macros v0.1.1 Compiling idna v1.0.3 Compiling primitive-types v0.10.1 Compiling cipher v0.4.4 Compiling openssl v0.10.68 Compiling secp256k1 v0.27.0 Compiling actix-rt v2.10.0 Compiling near-config-utils v0.23.0 Compiling blake2 v0.10.6 Compiling hmac v0.12.1 Compiling darling_macro v0.20.10 Compiling actix_derive v0.6.2 Compiling actix-macros v0.2.4 Compiling near-crypto v0.23.0 Compiling url v2.5.3 Compiling tonic v0.11.0 Compiling actix v0.13.5 Compiling sha1 v0.10.6 Compiling darling v0.20.10 Compiling clap_derive v4.5.18 Compiling zvariant_utils v1.0.1 Compiling event-listener v5.3.1 Compiling reed-solomon-erasure v4.0.2 Compiling serde_yaml v0.9.34+deprecated Compiling event-listener-strategy v0.5.2 Compiling serde_with_macros v3.11.0 Compiling aes v0.8.4 Compiling tracing-opentelemetry v0.23.0 Compiling tracing-appender v0.2.3 Compiling near-time v0.23.0 Compiling futures v0.3.31 Compiling clap v4.5.21 Compiling near-rpc-error-core v0.23.0 Compiling h2 v0.4.6 Compiling enumflags2_derive v0.7.10 Compiling proc-macro-error-attr v1.0.4 Compiling dirs-sys-next v0.1.2 Compiling chrono v0.4.38 Compiling native-tls v0.2.12 Compiling dirs-next v2.0.0 Compiling opentelemetry-proto v0.5.0 Compiling proc-macro-error v1.0.4 Compiling sha3 v0.10.8 Compiling enumflags2 v0.7.10 Compiling zstd v0.13.2 Compiling near-rpc-error-macro v0.23.0 Compiling hyper v1.5.0 Compiling opentelemetry-otlp v0.15.0 Compiling near-performance-metrics v0.23.0 Compiling serde_with v3.11.0 Compiling near-parameters v0.23.0 Compiling async-channel v2.3.1 Compiling io-lifetimes v1.0.11 Compiling zvariant_derive v3.15.2 Compiling near-fmt v0.23.0 Compiling bytesize v1.3.0 Compiling smart-default v0.6.0 Compiling near-async-derive v0.23.0 Compiling filetime v0.2.25 Compiling rustix v0.37.27 Compiling signal-hook v0.3.17 Compiling ring v0.17.8 Compiling near-o11y v0.23.0 Compiling schemars v0.8.21 Compiling blocking v1.6.1 Compiling hyper-util v0.1.10 Compiling zvariant v3.15.2 Compiling near-primitives v0.23.0 Compiling polling v2.8.0 Compiling interactive-clap-derive v0.2.10 Compiling tokio-native-tls v0.3.1 Compiling http-body-util v0.1.2 Compiling socket2 v0.4.10 Compiling num-bigint v0.4.6 Compiling vte_generate_state_changes v0.1.2 Compiling password-hash v0.4.2 Compiling bitcoin-internals v0.2.0 Compiling async-io v1.13.0 Compiling portable-atomic v1.9.0 Compiling pbkdf2 v0.11.0 Compiling hyper-tls v0.6.0 Compiling vte v0.11.1 Compiling num-rational v0.4.2 Compiling interactive-clap v0.2.10 Compiling bzip2-sys v0.1.11+1.0.8 Compiling zstd-safe v5.0.2+zstd.1.5.2 Compiling zbus_names v2.6.1 Compiling nix v0.26.4 Compiling async-fs v1.6.0 Compiling rustls-webpki v0.102.8 Compiling near-async v0.23.0 Compiling async-executor v1.13.1 Compiling zbus_macros v3.15.2 Compiling tracing-error v0.2.0 Compiling serde_urlencoded v0.7.1 Compiling digest v0.9.0 Compiling derivative v2.2.0 Compiling async-recursion v1.1.1 Compiling xdg-home v1.3.0 Compiling mio v0.8.11 Compiling num-iter v0.1.45 Compiling num-complex v0.4.6 Compiling reqwest v0.12.9 Compiling num v0.4.3 Compiling signal-hook-mio v0.2.4 Compiling dirs-sys v0.4.1 Compiling color-spantrace v0.2.1 Compiling rustls v0.23.16 Compiling ureq v2.10.1 Compiling zip v0.6.6 Compiling backtrace v0.3.71 Compiling zstd v0.11.2+zstd.1.5.2 Compiling bzip2 v0.4.4 Compiling vt100 v0.15.2 Compiling zbus v3.15.2 Compiling ahash v0.8.11 Compiling near-abi v0.4.3 Compiling near_schemafy_core v0.7.0 Compiling console v0.15.8 Compiling near-chain-configs v0.23.0 Compiling hkdf v0.12.4 Compiling cbc v0.1.2 Compiling serde_spanned v0.6.8 Compiling toml_datetime v0.6.8 Compiling block-buffer v0.9.0 Compiling crypto-mac v0.9.1 Compiling scroll_derive v0.11.1 Compiling xattr v1.3.1 Compiling string_cache v0.8.7 Compiling tar v0.4.43 Compiling binary-install v0.2.0 Compiling scroll v0.11.0 Compiling indicatif v0.17.9 Compiling toml_edit v0.22.22 Compiling crypto-hash v0.3.4 Compiling bitcoin_hashes v0.13.0 Compiling sha2 v0.9.9 Compiling csv v1.3.1 Compiling hmac v0.9.0 Compiling near_schemafy_lib v0.7.0 Compiling hashbrown v0.14.5 Compiling color-eyre v0.6.3 Compiling secret-service v3.1.0 Compiling near-jsonrpc-primitives v0.23.0 Compiling dirs v5.0.1 Compiling crossterm v0.25.0 Compiling near-token v0.2.1 Compiling term v0.7.0 Compiling tempfile v3.14.0 Compiling jobserver v0.1.32 Compiling linux-keyutils v0.2.4 Compiling is-terminal v0.4.13 Compiling fs2 v0.4.3 Compiling memmap2 v0.5.10 Compiling cargo-util v0.1.2 Compiling open v5.3.1 Compiling symbolic-common v8.8.0 Compiling goblin v0.5.4 Compiling near-sandbox-utils v0.8.0 Compiling prettytable v0.10.0 Compiling elementtree v0.7.0 Compiling names v0.14.0 Compiling inquire v0.7.5 Compiling keyring v2.3.3 Compiling shellexpand v3.1.0 Compiling near-abi-client-impl v0.1.1 Compiling bip39 v2.1.0 Compiling wasmparser v0.211.1 Compiling toml v0.8.19 Compiling slipped10 v0.4.6 Compiling tracing-indicatif v0.3.6 Compiling rust_decimal v1.36.0 Compiling camino v1.1.9 Compiling near-jsonrpc-client v0.10.1 Compiling near-gas v0.2.5 Compiling zip v0.5.13 Compiling linked-hash-map v0.5.6 Compiling cargo-platform v0.1.8 Compiling smart-default v0.7.1 Compiling symbolic-debuginfo v8.8.0 Compiling cargo_metadata v0.18.1 Compiling near-sandbox-utils v0.9.0 Compiling near-abi-client-macros v0.1.1 Compiling near-workspaces v0.11.1 Compiling prettyplease v0.1.25 Compiling jsonptr v0.4.7 Compiling atty v0.2.14 Compiling near-sandbox-utils v0.11.0 Compiling json-patch v2.0.0 Compiling tokio-retry v0.3.0 Compiling near-abi-client v0.1.1 Compiling near-socialdb-client v0.3.2 Compiling near-cli-rs v0.11.1 Compiling cargo-near v0.6.4 Compiling dice_contract_tests v0.0.1 (/mnt/c/home/git/dice/contract/tests) Finished `release` profile [optimized] target(s) in 6m 32s Running `/mnt/c/home/git/dice/target/release/dice_contract_tests` new: ExecutionFinalResult { total_gas_burnt: NearGas { inner: 1578245472594, }, transaction: ExecutionOutcome { transaction_hash: 7FFH3xGo8UcBi5VYZQSsusJthA32P11krBT7y42rTbGe, block_hash: EqW9K7p5uavCjnmxjDmbwvyye1QGKLigfgyxzPFDChgC, logs: [], receipt_ids: [ 5uDX7yWcpnb6wuEQVNGe2JnVCHpEiKzhd2Ka5LaEUrx8, ], gas_burnt: NearGas { inner: 308066207802, }, tokens_burnt: NearToken { inner: 30806620780200000000, }, executor_id: AccountId( "dev-20250329105017-64487314066191", ), status: SuccessReceiptId(5uDX7yWcpnb6wuEQVNGe2JnVCHpEiKzhd2Ka5LaEUrx8), }, receipts: [ ExecutionOutcome { transaction_hash: 5uDX7yWcpnb6wuEQVNGe2JnVCHpEiKzhd2Ka5LaEUrx8, block_hash: EqW9K7p5uavCjnmxjDmbwvyye1QGKLigfgyxzPFDChgC, logs: [], receipt_ids: [ 55QSBsVVveV9wp7xAp2CmEdKtisHXedbpUAY77ZWLxoJ, ], gas_burnt: NearGas { inner: 1270179264792, }, tokens_burnt: NearToken { inner: 127017926479200000000, }, executor_id: AccountId( "dev-20250329105017-64487314066191", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.001054267975692792 outcome (success: true): outcome_gas_burnt_usd: 0.000205788226811736 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.0008484797488810559 outcome_tokens_burnt_usd: 0.0 roll_within_bounds(contract, ''): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 4635213021532, }, transaction: ExecutionOutcome { transaction_hash: 8NErsYqZS9U73GEUjYfLCRmDcEKsVyP5TfJeVPR8Mbp5, block_hash: 2Rmx3h3EPtzJvDSscV87yQeYDF64gSFxZMEV9mJaoqku, logs: [], receipt_ids: [ HJTUAJo46LGo4WBq4JuihgNN6hNVFX27mZ4w5PQ5miwf, ], gas_burnt: NearGas { inner: 308171296700, }, tokens_burnt: NearToken { inner: 30817129670000000000, }, executor_id: AccountId( "dev-20250329105017-64487314066191", ), status: SuccessReceiptId(HJTUAJo46LGo4WBq4JuihgNN6hNVFX27mZ4w5PQ5miwf), }, receipts: [ ExecutionOutcome { transaction_hash: HJTUAJo46LGo4WBq4JuihgNN6hNVFX27mZ4w5PQ5miwf, block_hash: 2Rmx3h3EPtzJvDSscV87yQeYDF64gSFxZMEV9mJaoqku, logs: [ "10:50:19 \u{1b}[94md\u{1b}[39m #1 dice.accumulate_dice_rolls / { power = 4; acc = 0; roll = 1 }\n10:50:19 \u{1b}[94md\u{1b}[39m #2 dice.accumulate_dice_rolls / { power = 3; acc = 0; roll = 5; value = 864 }\n10:50:19 \u{1b}[94md\u{1b}[39m #3 dice.accumulate_dice_rolls / { power = 2; acc = 864; roll = 4; value = 108 }\n10:50:19 \u{1b}[94md\u{1b}[39m #4 dice.accumulate_dice_rolls / { power = 1; acc = 972; roll = 4; value = 18 }\n10:50:19 \u{1b}[94md\u{1b}[39m #5 dice.accumulate_dice_rolls / { power = 0; acc = 990; roll = 5; value = 4 }\n10:50:19 \u{1b}[94md\u{1b}[39m #6 dice.accumulate_dice_rolls / { power = -1; acc = 994; result = 995 }\n10:50:19 \u{1b}[94md\u{1b}[39m #7 dice_contract.roll_within_bounds / { max = 2000; rolls = [1, 5, 4, 4, 5]; result = Some(995) }", ], receipt_ids: [ ELNx8MnR83BKxjfdjHLr7G9TmjXjT6RvBsBaTXkxeuBP, ], gas_burnt: NearGas { inner: 4327041724832, }, tokens_burnt: NearToken { inner: 432704172483200000000, }, executor_id: AccountId( "dev-20250329105017-64487314066191", ), status: SuccessValue('995'), }, ], status: SuccessValue('995'), } total_gas_burnt_usd: 0.003096322298383376 outcome (success: true): outcome_gas_burnt_usd: 0.00020585842619559998 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.002890463872187776 outcome_tokens_burnt_usd: 0.0 roll_within_bounds_borsh(contract, ''): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 4745185351441, }, transaction: ExecutionOutcome { transaction_hash: J2jFJUriQ5HWKH6XMgHusUuMfvHGyL1Jadp5DuYoR2mS, block_hash: 8dZisjZUy4mMykGQrkYvBah6MUGceAGcpTM9FJPjZk9K, logs: [], receipt_ids: [ 8px9EbFN3ni1qkp7DcjCXts9CyLrfYJUtNDCgvSEpdLC, ], gas_burnt: NearGas { inner: 308151173294, }, tokens_burnt: NearToken { inner: 30815117329400000000, }, executor_id: AccountId( "dev-20250329105017-64487314066191", ), status: SuccessReceiptId(8px9EbFN3ni1qkp7DcjCXts9CyLrfYJUtNDCgvSEpdLC), }, receipts: [ ExecutionOutcome { transaction_hash: 8px9EbFN3ni1qkp7DcjCXts9CyLrfYJUtNDCgvSEpdLC, block_hash: 8dZisjZUy4mMykGQrkYvBah6MUGceAGcpTM9FJPjZk9K, logs: [ "10:50:19 \u{1b}[94md\u{1b}[39m #1 dice.accumulate_dice_rolls / { power = 4; acc = 0; roll = 2; value = 1296 }\n10:50:19 \u{1b}[94md\u{1b}[39m #2 dice.accumulate_dice_rolls / { power = 3; acc = 1296; roll = 2; value = 216 }\n10:50:19 \u{1b}[94md\u{1b}[39m #3 dice.accumulate_dice_rolls / { power = 2; acc = 1512; roll = 6; value = 180 }\n10:50:19 \u{1b}[94md\u{1b}[39m #4 dice.accumulate_dice_rolls / { power = 1; acc = 1692; roll = 4; value = 18 }\n10:50:19 \u{1b}[94md\u{1b}[39m #5 dice.accumulate_dice_rolls / { power = 0; acc = 1710; roll = 5; value = 4 }\n10:50:19 \u{1b}[94md\u{1b}[39m #6 dice.accumulate_dice_rolls / { power = -1; acc = 1714; result = 1715 }\n10:50:19 \u{1b}[94md\u{1b}[39m #7 dice_contract.roll_within_bounds / { max = 2000; rolls = [2, 2, 6, 4, 5]; result = Some(1715) }", ], receipt_ids: [ 5W4GZ2D8uYr9zPKPHbz6QcYyGGCDEj2XdR5aTVDPfwgT, ], gas_burnt: NearGas { inner: 4437034178147, }, tokens_burnt: NearToken { inner: 443703417814700000000, }, executor_id: AccountId( "dev-20250329105017-64487314066191", ), status: SuccessValue(AbMGAAAAAAAA), }, ], status: SuccessValue(AbMGAAAAAAAA), } total_gas_burnt_usd: 0.003169783814762588 outcome (success: true): outcome_gas_burnt_usd: 0.000205844983760392 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.0029639388310021956 outcome_tokens_burnt_usd: 0.0 n: Some( Some( 1715, ), ) generate_random_number(contract, ''): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 27519652512445, }, transaction: ExecutionOutcome { transaction_hash: kfFF1TffHLRsjn95Lg7J9Xxpk8vAX3FKULi9vkgNZ1A, block_hash: 8vduYWjCPQ8rQpG1BGk5DcHVvr1Gwce8L8fWCStPMiYW, logs: [], receipt_ids: [ DyGKtmtxhv43uH8gY4C6rhDiRzHzyG246R1BcojnhQCX, ], gas_burnt: NearGas { inner: 308198127908, }, tokens_burnt: NearToken { inner: 30819812790800000000, }, executor_id: AccountId( "dev-20250329105017-64487314066191", ), status: SuccessReceiptId(DyGKtmtxhv43uH8gY4C6rhDiRzHzyG246R1BcojnhQCX), }, receipts: [ ExecutionOutcome { transaction_hash: DyGKtmtxhv43uH8gY4C6rhDiRzHzyG246R1BcojnhQCX, block_hash: 8vduYWjCPQ8rQpG1BGk5DcHVvr1Gwce8L8fWCStPMiYW, logs: [ "10:50:20 \u{1b}[94md\u{1b}[39m #2 dice_contract.generate_random_number / { max = 2000; key = \"key\"; proof = \"proof\"; block_timestamp = 1743245420075422278; block_height = 17; epoch_height = 1; account_balance = NearToken { inner: 99816504885979818773471040 }; signer_account_id = \"dev-20250329105017-64487314066191\"; predecessor_account_id = \"dev-20250329105017-64487314066191\"; seed = [166, 80, 108, 25, 138, 102, 186, 5, 58, 107, 24, 25, 87, 131, 159, 140, 160, 216, 89, 21, 85, 146, 45, 186, 200, 58, 36, 208, 137, 189, 104, 197]; seeds = Vector { len: 64, prefix: [115, 101, 101, 100, 115] }; entropy_len = 146; entropy = [166, 80, 108, 25, 138, 102, 186, 5, 58, 107, 24, 25, 87, 131, 159, 140, 160, 216, 89, 21, 85, 146, 45, 186, 200, 58, 36, 208, 137, 189, 104, 197, 1, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 70, 18, 236, 51, 121, 64, 49, 24, 64, 95, 8, 230, 63, 122, 134, 146, 247, 144, 82, 0, 0, 0, 0, 0, 100, 101, 118, 45, 50, 48, 50, 53, 48, 51, 50, 57, 49, 48, 53, 48, 49, 55, 45, 54, 52, 52, 56, 55, 51, 49, 52, 48, 54, 54, 49, 57, 49, 100, 101, 118, 45, 50, 48, 50, 53, 48, 51, 50, 57, 49, 48, 53, 48, 49, 55, 45, 54, 52, 52, 56, 55, 51, 49, 52, 48, 54, 54, 49, 57, 49, 112, 114, 111, 111, 102, 107, 101, 121]; hash_u8 = [92, 180, 195, 162, 13, 54, 145, 150, 18, 230, 162, 249, 236, 255, 67, 30, 70, 200, 42, 242, 58, 227, 73, 151, 103, 149, 32, 143, 136, 109, 233, 141, 216, 218, 203, 156, 28, 58, 128, 170, 51, 203, 62, 117, 73, 136, 34, 251, 255, 190, 139, 114, 37, 158, 48, 77, 17, 166, 37, 15, 69, 87, 15, 226]; rolls = [2, 6, 3, 6, 1, 6, 1, 6, 6, 2, 6, 3, 2, 3, 1, 6, 4, 2, 6, 2, 4, 5, 1, 1, 1, 5, 2, 5, 4, 1, 5, 3, 6, 2, 5, 6, 4, 4, 2, 2, 3, 5, 2, 3, 1, 4, 4, 5, 3, 4, 1, 6, 1, 2, 6, 5, 5, 4, 1, 3, 3, 3, 3, 4] }\n10:50:20 \u{1b}[94md\u{1b}[39m #3 dice.calculate_dice_count / { max = 2000; p = 7776; n = 5 }\n10:50:20 \u{1b}[94md\u{1b}[39m #4 dice.create_sequential_roller / roll / { current_index = 0; acc = 1; len = -1; last_item = None }\n10:50:20 \u{1b}[94md\u{1b}[39m #5 dice.create_sequential_roller / roll / { current_index = 1; acc = 1; len = -1; last_item = Some(2) }\n10:50:20 \u{1b}[94md\u{1b}[39m #6 dice.create_sequential_roller / roll / { current_index = 2; acc = 1; len = -1; last_item = Some(6) }\n10:50:20 \u{1b}[94md\u{1b}[39m #7 dice.create_sequential_roller / roll / { current_index = 3; acc = 1; len = -1; last_item = Some(3) }\n10:50:20 \u{1b}[94md\u{1b}[39m #8 dice.create_sequential_roller / roll / { current_index = 4; acc = 1; len = -1; last_item = Some(6) }\n10:50:20 \u{1b}[94md\u{1b}[39m #9 dice.accumulate_dice_rolls / { power = 4; acc = 0; roll = 1 }\n10:50:20 \u{1b}[94md\u{1b}[39m #10 dice.accumulate_dice_rolls / { power = 3; acc = 0; roll = 6; value = 1080 }\n10:50:20 \u{1b}[94md\u{1b}[39m #11 dice.accumulate_dice_rolls / { power = 2; acc = 1080; roll = 3; value = 72 }\n10:50:20 \u{1b}[94md\u{1b}[39m #12 dice.accumulate_dice_rolls / { power = 1; acc = 1152; roll = 6; value = 30 }\n10:50:20 \u{1b}[94md\u{1b}[39m #13 dice.accumulate_dice_rolls / { power = 0; acc = 1182; roll = 2; value = 1 }\n10:50:20 \u{1b}[94md\u{1b}[39m #14 dice.accumulate_dice_rolls / { power = -1; acc = 1183; result = 1184 }", ], receipt_ids: [ G9ip5oq5QzyLswAjo63htCLbD12N55rKT9msAgRr8qzB, ], gas_burnt: NearGas { inner: 27211454384537, }, tokens_burnt: NearToken { inner: 2721145438453700000000, }, executor_id: AccountId( "dev-20250329105017-64487314066191", ), status: SuccessValue('1184'), }, ], status: SuccessValue('1184'), } total_gas_burnt_usd: 0.018383127878313258 outcome (success: true): outcome_gas_burnt_usd: 0.00020587634944254398 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.018177251528870713 outcome_tokens_burnt_usd: 0.0 n: 1184 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "C:\home\git\dice\lib\fsharp/dice_fsharp.dib"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/dice/lib/fsharp/dice_fsharp.dib", "--output-path", "c:/home/git/dice/lib/fsharp/dice_fsharp.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/dice/lib/fsharp/dice_fsharp.dib" --output-path "c:/home/git/dice/lib/fsharp/dice_fsharp.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # DiceFSharp (Dice) > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if !INTERACTIVE > open Polyglot > open Lib > #endif > > open Common > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## sixthPowerSequence > > ── fsharp ────────────────────────────────────────────────────────────────────── > let sixthPowerSequence () = > 1 |> Seq.unfold (fun state -> Some (state, state * 6)) |> Seq.cache > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > sixthPowerSequence () > |> Seq.take 8 > |> Seq.toList > |> _assertEqual [[ 1; 6; 36; 216; 1296; 7776; 46656; 279936 ]] > > ── [ 63.49ms - stdout ] ──────────────────────────────────────────────────────── > │ [1; 6; 36; 216; 1296; 7776; 46656; 279936] > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## accumulateDiceRolls > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec accumulateDiceRolls log rolls power acc = > match rolls with > | _ when power < 0 -> > log |> Option.iter ((|>) $"accumulateDiceRolls / power: {power} / acc: > {acc}") > Some (acc + 1, rolls) > | [[]] -> None > | roll :: rest when roll > 1 -> > let coeff = sixthPowerSequence () |> Seq.item power > let value = (roll - 1) * coeff > log |> Option.iter ((|>) $"accumulateDiceRolls / \ > power: {power} / acc: {acc} / roll: {roll} / value: {value}" > ) > accumulateDiceRolls log rest (power - 1) (acc + value) > | roll :: rest -> > log |> Option.iter ((|>) $"accumulateDiceRolls / power: {power} / acc: > {acc} / roll: {roll}") > accumulateDiceRolls log rest (power - 1) acc > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > accumulateDiceRolls (Some (printfn "%s")) [[ 6; 5; 4; 3; 2 ]] 0 1000 > |> _assertEqual (Some (1006, [[ 5; 4; 3; 2 ]])) > > ── [ 44.82ms - stdout ] ──────────────────────────────────────────────────────── > │ accumulateDiceRolls / power: 0 / acc: 1000 / roll: 6 / value: > 5 > │ accumulateDiceRolls / power: -1 / acc: 1005 > │ Some (1006, [5; 4; 3; 2]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > accumulateDiceRolls (Some (printfn "%s")) [[ 6; 5; 4; 3; 2 ]] 1 1000 > |> _assertEqual (Some (1035, [[ 4; 3; 2 ]])) > > ── [ 24.93ms - stdout ] ──────────────────────────────────────────────────────── > │ accumulateDiceRolls / power: 1 / acc: 1000 / roll: 6 / value: > 30 > │ accumulateDiceRolls / power: 0 / acc: 1030 / roll: 5 / value: > 4 > │ accumulateDiceRolls / power: -1 / acc: 1034 > │ Some (1035, [4; 3; 2]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > accumulateDiceRolls (Some (printfn "%s")) [[ 6; 5; 4; 3; 2 ]] 2 1000 > |> _assertEqual (Some (1208, [[ 3; 2 ]])) > > ── [ 24.44ms - stdout ] ──────────────────────────────────────────────────────── > │ accumulateDiceRolls / power: 2 / acc: 1000 / roll: 6 / value: > 180 > │ accumulateDiceRolls / power: 1 / acc: 1180 / roll: 5 / value: > 24 > │ accumulateDiceRolls / power: 0 / acc: 1204 / roll: 4 / value: > 3 > │ accumulateDiceRolls / power: -1 / acc: 1207 > │ Some (1208, [3; 2]) > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rollWithinBounds > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rollWithinBounds log max rolls = > let power = List.length rolls - 1 > match accumulateDiceRolls log rolls power 0 with > | Some (result, _) when result >= 1 && result <= max -> Some result > | _ -> None > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > rollWithinBounds (Some (printfn "%s")) 2000 [[ 1; 5; 4; 4; 5 ]] > |> _assertEqual (Some 995) > > ── [ 22.47ms - stdout ] ──────────────────────────────────────────────────────── > │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 1 > │ accumulateDiceRolls / power: 3 / acc: 0 / roll: 5 / value: > 864 > │ accumulateDiceRolls / power: 2 / acc: 864 / roll: 4 / value: > 108 > │ accumulateDiceRolls / power: 1 / acc: 972 / roll: 4 / value: > 18 > │ accumulateDiceRolls / power: 0 / acc: 990 / roll: 5 / value: > 4 > │ accumulateDiceRolls / power: -1 / acc: 994 > │ Some 995 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > rollWithinBounds (Some (printfn "%s")) 2000 [[ 2; 2; 6; 4; 5 ]] > |> _assertEqual (Some 1715) > > ── [ 21.74ms - stdout ] ──────────────────────────────────────────────────────── > │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 2 / value: > 1296 > │ accumulateDiceRolls / power: 3 / acc: 1296 / roll: 2 / value: > 216 > │ accumulateDiceRolls / power: 2 / acc: 1512 / roll: 6 / value: > 180 > │ accumulateDiceRolls / power: 1 / acc: 1692 / roll: 4 / value: > 18 > │ accumulateDiceRolls / power: 0 / acc: 1710 / roll: 5 / value: > 4 > │ accumulateDiceRolls / power: -1 / acc: 1714 > │ Some 1715 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > rollWithinBounds (Some (printfn "%s")) 2000 [[ 4; 1; 1; 2; 3 ]] > |> _assertEqual None > > ── [ 21.22ms - stdout ] ──────────────────────────────────────────────────────── > │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 4 / value: > 3888 > │ accumulateDiceRolls / power: 3 / acc: 3888 / roll: 1 > │ accumulateDiceRolls / power: 2 / acc: 3888 / roll: 1 > │ accumulateDiceRolls / power: 1 / acc: 3888 / roll: 2 / value: > 6 > │ accumulateDiceRolls / power: 0 / acc: 3894 / roll: 3 / value: > 2 > │ accumulateDiceRolls / power: -1 / acc: 3896 > │ <null> > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## calculateDiceCount > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline calculateDiceCount log max = > let rec loop n p = > if p < max > then loop (n + 1) (p * 6) > else > log |> Option.iter ((|>) $"calculateDiceCount / max: {max} / n: {n} > / p: {p}") > n > if max = 1 > then 1 > else loop 0 1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > calculateDiceCount (Some (printfn "%s")) 36 > |> _assertEqual 2 > > ── [ 24.43ms - stdout ] ──────────────────────────────────────────────────────── > │ calculateDiceCount / max: 36 / n: 2 / p: 36 > │ 2 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > calculateDiceCount (Some (printfn "%s")) 7777 > |> _assertEqual 6 > > ── [ 23.58ms - stdout ] ──────────────────────────────────────────────────────── > │ calculateDiceCount / max: 7777 / n: 6 / p: 46656 > │ 6 > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rollDice > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if FABLE_COMPILER_RUST > let rollDice () : int = > #if !WASM && !CONTRACT > Fable.Core.RustInterop.emitRustExpr () "rand::Rng::gen_range(&mut > rand::thread_rng(), 1..7)" > #else > 1 > #endif > #else > let private random = System.Random () > let rollDice () = > random.Next (1, 7) > #endif > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rotateNumber > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rotateNumber max n = > (n - 1 + max) % max + 1 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rotateNumbers > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rotateNumbers max items = > items |> Seq.map (rotateNumber max) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > [[ -1 .. 14 ]] > |> rotateNumbers 6 > |> Seq.toList > |> _assertEqual [[ 5; 6; 1; 2; 3; 4; 5; 6; 1; 2; 3; 4; 5; 6; 1; 2 ]] > > ── [ 34.24ms - stdout ] ──────────────────────────────────────────────────────── > │ [5; 6; 1; 2; 3; 4; 5; 6; 1; 2; 3; 4; 5; 6; 1; 2] > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## createSequentialRoller > > ── fsharp ────────────────────────────────────────────────────────────────────── > let createSequentialRoller list = > let mutable currentIndex = 0 > fun () -> > match list |> List.tryItem currentIndex with > | Some item -> > currentIndex <- currentIndex + 1 > item > | None -> > failwith "createSequentialRoller / End of list" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rollProgressively > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rollProgressively log roll reroll max = > let power = (calculateDiceCount log max) - 1 > let rec loop rolls size = > if size < power + 1 > then loop (roll () :: rolls) (size + 1) > else > match accumulateDiceRolls log rolls power 0 with > | Some (result, _) when result <= max -> result > | _ when reroll -> loop (List.init power (fun _ -> roll ())) power > | _ -> loop (roll () :: rolls) (size + 1) > loop [[]] 0 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > rollProgressively None rollDice false 1 > |> _assertEqual 1 > > ── [ 16.19ms - stdout ] ──────────────────────────────────────────────────────── > │ 1 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let sequentialRoll = createSequentialRoller [[ 5; 4; 4; 5; 1 ]] > > rollProgressively (Some (printfn "%s")) sequentialRoll false 2000 > |> _assertEqual 995 > > ── [ 19.72ms - stdout ] ──────────────────────────────────────────────────────── > │ calculateDiceCount / max: 2000 / n: 5 / p: 7776 > │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 1 > │ accumulateDiceRolls / power: 3 / acc: 0 / roll: 5 / value: > 864 > │ accumulateDiceRolls / power: 2 / acc: 864 / roll: 4 / value: > 108 > │ accumulateDiceRolls / power: 1 / acc: 972 / roll: 4 / value: > 18 > │ accumulateDiceRolls / power: 0 / acc: 990 / roll: 5 / value: > 4 > │ accumulateDiceRolls / power: -1 / acc: 994 > │ 995 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let sequentialRoll = createSequentialRoller [[ 5; 4; 4; 5; 2 ]] > > fun () -> rollProgressively (Some (printfn "%s")) sequentialRoll false 2000 |> > ignore > |> _throwsC (fun ex _ -> > SpiralSm.format_exception ex > |> _assertEqual "System.Exception: createSequentialRoller / End of list" > ) > > ── [ 45.39ms - stdout ] ──────────────────────────────────────────────────────── > │ <fun:it@5-13> > │ > │ calculateDiceCount / max: 2000 / n: 5 / p: 7776 > │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 2 / value: > 1296 > │ accumulateDiceRolls / power: 3 / acc: 1296 / roll: 5 / value: > 864 > │ accumulateDiceRolls / power: 2 / acc: 2160 / roll: 4 / value: > 108 > │ accumulateDiceRolls / power: 1 / acc: 2268 / roll: 4 / value: > 18 > │ accumulateDiceRolls / power: 0 / acc: 2286 / roll: 5 / value: > 4 > │ accumulateDiceRolls / power: -1 / acc: 2290 > │ "System.Exception: createSequentialRoller / End of list" > │ > │ > > ── fsharp - ignored ──────────────────────────────────────────────────────────── > //// ignore > > rollProgressively (Some (printfn "%s")) rollDice false 2000 > > ── fsharp - ignored ──────────────────────────────────────────────────────────── > //// ignore > > rollProgressively (Some (printfn "%s")) rollDice true 2000 > > ── fsharp - ignored ──────────────────────────────────────────────────────────── > //// ignore > > [[| 1 .. 10000 |]] > |> Array.Parallel.map (fun _ -> rollProgressively None rollDice false 10) > |> Array.Parallel.groupBy id > |> Array.Parallel.map (fun (k, v) -> k, v.Length) > |> Array.Parallel.sortBy fst > > ── fsharp - ignored ──────────────────────────────────────────────────────────── > //// ignore > > [[| 1 .. 10000 |]] > |> Array.Parallel.map (fun _ -> rollProgressively None rollDice true 10) > |> Array.Parallel.groupBy id > |> Array.Parallel.map (fun (k, v) -> k, v.Length) > |> Array.Parallel.sortBy fst > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > [[| 1 .. 100 |]] > |> Array.Parallel.iter (fun n -> > [[| 0 .. 1 |]] > |> Array.Parallel.iter (fun reroll -> > [[| 1 .. 3500 |]] > |> Array.Parallel.map (fun _ -> rollProgressively None rollDice (reroll > = 1) n) > |> Array.Parallel.groupBy id > |> Array.length > |> __assertEqual false n > ) > ) > > ── fsharp - ignored ──────────────────────────────────────────────────────────── > //// ignore > > let inline rollMax fn max n = > [[| 1 .. n |]] > |> Array.Parallel.map (fun _ -> fn max) > |> Array.Parallel.groupBy id > |> Array.Parallel.map (fun (_, v) -> v.Length) > > let rec rollN max n even current = > let roll = rollMax (rollProgressively None rollDice true) max n > if roll |> Array.Parallel.forall ((=) even) > then current > else rollN max n even (current + 1) > > let run () = > let max = 10 > let n = 30 > let even = (n / max) |> int > > rollN max n even 0 > > // run () > > ── fsharp - ignored ──────────────────────────────────────────────────────────── > //// ignore > > let run () = > let max = 10 > let n = 30 > let even = (n / max) |> int > [[| 1 .. 100 |]] > |> Array.Parallel.map (fun i -> > let roll = rollN max n even 0 > printfn $"i: {i} / roll: {roll}" > float roll > ) > |> Array.Parallel.average > > // run () > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## FsCheck (test) > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fscheck/3.0.1/lib/netstandard2.0/FsCheck. > dll" > #r > @"../../../../../../../.nuget/packages/expecto.fscheck/11.0.0-alpha8/lib/net6.0/ > Expecto.FsCheck3.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > type ValorDado = > | Um > | Dois > | Tres > | Quatro > | Cinco > | Seis > > type Aspecto = > | Passado of string > | Presente of string > | Futuro of string > | Desafios of string > | Recursos of string > | ResultadoProjetado of string > | InfluenciaExterna of string > > type Contexto = > | Amor of string > | Trabalho of string > | Saude of string > | Dinheiro of string > > type Universo = > | Real of string > | Virtual of string > | Espiritual of string > > type Caracteristica = > | Aspecto of Aspecto > | Contexto of Contexto > | Universo of Universo > | DadoRolado of ValorDado > > type Interacao = > | Conflito > | Parceria > | Crescimento > | Estagnacao > | Separacao > | Harmonia > | Desafio > | Colaboracao > | Progresso > | Mudanca > | Sucesso > > type Interpretacao = > | Interpretacao of Caracteristica * Interacao * Caracteristica > > type SistemaDivinacao = > | SistemaDivinacao of Interpretacao list * Caracteristica > > let config = { Expecto.FsCheckConfig.defaultConfig with maxTest = 10000 } > > let shuffleList xs seed = > let rnd = Random (seed) > xs > |> List.map (fun x -> rnd.Next(), x) > |> List.sortBy fst > |> List.map snd > > > > > type Complexity = Simple | Moderate | Complex > type Duration = Short | Medium | Long > > type Dice = D1 of int | D2 of int > > type Task = > | Task of Complexity * Duration * Task > | NoTask > > let durationOfFocus (d1: int) (d2: int) = > match d1 + d2 with > | sum when sum <= 4 -> Short > | sum when sum <= 8 -> Medium > | _ -> Long > > let complexityOfTask (d1: int) (d2: int) = > match d1 * d2 with > | product when product <= 12 -> Simple > | product when product <= 24 -> Moderate > | _ -> Complex > > let rec generateTaskList d1 d2 previousTask = > match d1, d2 with > | d1, d2 when d1 > 0 && d2 > 0 -> > let complexity = complexityOfTask d1 d2 > let duration = durationOfFocus d1 d2 > let newTask = Task (complexity, duration, previousTask) > generateTaskList (d1 - 1) (d2 - 1) newTask > | _, _ -> previousTask > > > > > > let properties = > Expecto.Tests.testList "FsCheck samples" [[ > let sistemaDivinacao (interpretacoes: Interpretacao list, > caracteristica: Caracteristica) = > let interpretacoes = interpretacoes |> List.sort > SistemaDivinacao (interpretacoes, caracteristica) > > Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao > is consistent" <| > fun (interpretacoes: Interpretacao list, caracteristica: > Caracteristica) -> > sistemaDivinacao (interpretacoes, caracteristica) > = sistemaDivinacao (interpretacoes, caracteristica) > > Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao > is variant under permutation" <| > fun (input: Interpretacao list, caracteristica: Caracteristica) -> > let seed = 42 > let shuffledInput = shuffleList input seed > sistemaDivinacao (input, caracteristica) = sistemaDivinacao > (shuffledInput, caracteristica) > > Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao > can handle lists of any size" <| > fun (input: Interpretacao list, caracteristica: Caracteristica) -> > let sistema = sistemaDivinacao (input, caracteristica) > sistema <> Unchecked.defaultof<_> > > Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao > is invariant under data transformations" <| > fun (input: Interpretacao list, caracteristica: Caracteristica, > newInterpretation: Interpretacao) -> > let containsNewInterpretation = input |> List.contains > newInterpretation > let modifiedInput = > if containsNewInterpretation > then input > else newInterpretation :: input > if containsNewInterpretation > then sistemaDivinacao (List.sort input, caracteristica) > = sistemaDivinacao (List.sort modifiedInput, > caracteristica) > else sistemaDivinacao (List.sort input, caracteristica) > <> sistemaDivinacao (List.sort modifiedInput, > caracteristica) > > > > > > > let focusDurationProperty = > FsCheck.FSharp.Prop.forAll (FsCheck.FSharp.Arb.fromGen > (FsCheck.FSharp.Gen.map2 (fun d1 d2 -> (d1, d2)) (FsCheck.FSharp.Gen.choose (1, > 6)) (FsCheck.FSharp.Gen.choose (1, 6)))) <| fun (d1, d2) -> > let expected = > match d1 + d2 with > | sum when sum <= 4 -> Short > | sum when sum <= 8 -> Medium > | _ -> Long > let actual = durationOfFocus d1 d2 > expected = actual > > let taskComplexityProperty = > FsCheck.FSharp.Prop.forAll (FsCheck.FSharp.Arb.fromGen > (FsCheck.FSharp.Gen.map2 (fun d1 d2 -> (d1, d2)) (FsCheck.FSharp.Gen.choose (1, > 6)) (FsCheck.FSharp.Gen.choose (1, 6)))) <| fun (d1, d2) -> > let expected = > match d1 * d2 with > | product when product <= 12 -> Simple > | product when product <= 24 -> Moderate > | _ -> Complex > let actual = complexityOfTask d1 d2 > expected = actual > > let taskListLengthProperty = > FsCheck.FSharp.Prop.forAll (FsCheck.FSharp.Arb.fromGen > (FsCheck.FSharp.Gen.map2 (fun d1 d2 -> (d1, d2)) (FsCheck.FSharp.Gen.choose (1, > 6)) (FsCheck.FSharp.Gen.choose (1, 6)))) <| fun (d1, d2) -> > let taskList = generateTaskList d1 d2 NoTask > let rec taskListLength taskList = > match taskList with > | Task (_, _, nextTask) -> 1 + taskListLength nextTask > | NoTask -> 0 > let actual = taskListLength taskList > let expected = min d1 d2 > expected = actual > > > Expecto.ExpectoFsCheck.testProperty "Duration of focus should be > calculated correctly" focusDurationProperty > Expecto.ExpectoFsCheck.testProperty "Task complexity should be > calculated correctly" taskComplexityProperty > Expecto.ExpectoFsCheck.testProperty "Task list should have the correct > length" taskListLengthProperty > > > > ]] > > let dice1 = 6 > let dice2 = 6 > > let taskList = generateTaskList dice1 dice2 NoTask > > let rec printTaskList taskList = > match taskList with > | Task (complexity, duration, nextTask) -> > printfn "Complexidade: %A, Duração: %A" complexity duration > printTaskList nextTask > | NoTask -> () > > printTaskList taskList > > Expecto.Tests.runTestsWithCLIArgs [[]] [[||]] properties > |> _assertEqual 0 > > ── [ 623.54ms - stderr ] ─────────────────────────────────────────────────────── > │ Complexidade: Simple, Duração: Short > │ Complexidade: Simple, Duração: Short > │ Complexidade: Simple, Duração: Medium > │ Complexidade: Moderate, Duração: Medium > │ Complexidade: Complex, Duração: Long > │ Complexidade: Complex, Duração: Long > │ > NotebookRunner.RunNotebookAsync / exiting... 3 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## main > > ── fsharp ────────────────────────────────────────────────────────────────────── > let main args = > let result = rollProgressively (Some (printfn "%s")) rollDice true > (System.Int32.MaxValue / 10) > trace Debug (fun () -> $"main / result: {result}") _locals > 0 > NotebookRunner.RunNotebookAsync / exiting... 2 > NotebookRunner.RunNotebookAsync / exiting... 1 > NotebookRunner.RunNotebookAsync / event: CommandFailed: > System.IO.FileNotFoundException: Could not load file or assembly 'Mono.Cecil, > Version=0.11.4.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e'. The system > cannot find the file specified. > File name: 'Mono.Cecil, Version=0.11.4.0, Culture=neutral, > PublicKeyToken=50cebf1cceb9d05e' > at <StartupCode$Expecto>.$Expecto.Impl..cctor() > at Expecto.Impl.get_defaultPrinter@257.Invoke(Test _tests) in > C:\workspaces\dotnet\expecto\Expecto\Expecto.Impl.fs:line 258 > at Expecto.Impl.runEvalWithCancel@743.Invoke(Unit unitVar) in > C:\workspaces\dotnet\expecto\Expecto\Expecto.Impl.fs:line 743 > at > Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[T,TResult](AsyncActivati > on`1 ctxt, TResult result1, FSharpFunc`2 part2) in > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510 > at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) in > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112 > --- End of stack trace from previous location --- > at Microsoft.FSharp.Control.AsyncResult`1.Commit() in > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 454 > at > Microsoft.FSharp.Control.AsyncPrimitives.QueueAsyncAndWaitForResultSynchronously > [a](CancellationToken token, FSharpAsync`1 computation, FSharpOption`1 timeout) > in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1139 > at > Microsoft.FSharp.Control.AsyncPrimitives.RunSynchronously[T](CancellationToken > cancellationToken, FSharpAsync`1 computation, FSharpOption`1 timeout) in > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1166 > at Microsoft.FSharp.Control.FSharpAsync.RunSynchronously[T](FSharpAsync`1 > computation, FSharpOption`1 timeout, FSharpOption`1 cancellationToken) in > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1515 > at Expecto.Tests.runTestsWithCancel@617(CancellationToken ct, ExpectoConfig > config, Test tests) in C:\workspaces\dotnet\expecto\Expecto\Expecto.fs:line 635 > at Expecto.Tests.runTestsWithCLIArgsAndCancel(CancellationToken ct, > IEnumerable`1 cliArgs, String[] args, Test tests) in > C:\workspaces\dotnet\expecto\Expecto\Expecto.fs:line 660 > at Expecto.Tests.runTestsWithCLIArgs(IEnumerable`1 cliArgs, String[] args, > Test tests) in C:\workspaces\dotnet\expecto\Expecto\Expecto.fs:line 668 > at <StartupCode$FSI_0052>.$FSI_0052.main@() > at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, > Signature sig, Boolean isConstructor) > at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, > BindingFlags invokeAttr) 00:00:22 v #3 runtime.execute_with_options / result / { exit_code = -1; std_trace_length = 26177 } 00:00:22 d #4 spiral.run / dib / { exit_code = -1; result_length = 26177 } thread 'main' panicked at C:\home\git\spiral\apps\spiral\spiral.rs:16903:45: spiral.run / dib / exit_code: -1 / result: ── markdown ──────────────────────────────────────────────────────────────────── │ # DiceFSharp (Dice) ── fsharp ────────────────────────────────────────────────────────────────────── #if !INTERACTIVE open Polyglot open Lib #endif open Common ── markdown ──────────────────────────────────────────────────────────────────── │ ## sixthPowerSequence ── fsharp ────────────────────────────────────────────────────────────────────── let sixthPowerSequence () = 1 |> Seq.unfold (fun state -> Some (state, state * 6)) |> Seq.cache ── fsharp ────────────────────────────────────────────────────────────────────── //// test sixthPowerSequence () |> Seq.take 8 |> Seq.toList |> _assertEqual [[ 1; 6; 36; 216; 1296; 7776; 46656; 279936 ]] ── [ 63.49ms - stdout ] ──────────────────────────────────────────────────────── │ [1; 6; 36; 216; 1296; 7776; 46656; 279936] │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## accumulateDiceRolls ── fsharp ────────────────────────────────────────────────────────────────────── let rec accumulateDiceRolls log rolls power acc = match rolls with | _ when power < 0 -> log |> Option.iter ((|>) $"accumulateDiceRolls / power: {power} / acc: {acc}") Some (acc + 1, rolls) | [[]] -> None | roll :: rest when roll > 1 -> let coeff = sixthPowerSequence () |> Seq.item power let value = (roll - 1) * coeff log |> Option.iter ((|>) $"accumulateDiceRolls / \ power: {power} / acc: {acc} / roll: {roll} / value: {value}" ) accumulateDiceRolls log rest (power - 1) (acc + value) | roll :: rest -> log |> Option.iter ((|>) $"accumulateDiceRolls / power: {power} / acc: {acc} / roll: {roll}") accumulateDiceRolls log rest (power - 1) acc ── fsharp ────────────────────────────────────────────────────────────────────── //// test accumulateDiceRolls (Some (printfn "%s")) [[ 6; 5; 4; 3; 2 ]] 0 1000 |> _assertEqual (Some (1006, [[ 5; 4; 3; 2 ]])) ── [ 44.82ms - stdout ] ──────────────────────────────────────────────────────── │ accumulateDiceRolls / power: 0 / acc: 1000 / roll: 6 / value: 5 │ accumulateDiceRolls / power: -1 / acc: 1005 │ Some (1006, [5; 4; 3; 2]) │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test accumulateDiceRolls (Some (printfn "%s")) [[ 6; 5; 4; 3; 2 ]] 1 1000 |> _assertEqual (Some (1035, [[ 4; 3; 2 ]])) ── [ 24.93ms - stdout ] ──────────────────────────────────────────────────────── │ accumulateDiceRolls / power: 1 / acc: 1000 / roll: 6 / value: 30 │ accumulateDiceRolls / power: 0 / acc: 1030 / roll: 5 / value: 4 │ accumulateDiceRolls / power: -1 / acc: 1034 │ Some (1035, [4; 3; 2]) │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test accumulateDiceRolls (Some (printfn "%s")) [[ 6; 5; 4; 3; 2 ]] 2 1000 |> _assertEqual (Some (1208, [[ 3; 2 ]])) ── [ 24.44ms - stdout ] ──────────────────────────────────────────────────────── │ accumulateDiceRolls / power: 2 / acc: 1000 / roll: 6 / value: 180 │ accumulateDiceRolls / power: 1 / acc: 1180 / roll: 5 / value: 24 │ accumulateDiceRolls / power: 0 / acc: 1204 / roll: 4 / value: 3 │ accumulateDiceRolls / power: -1 / acc: 1207 │ Some (1208, [3; 2]) │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## rollWithinBounds ── fsharp ────────────────────────────────────────────────────────────────────── let rollWithinBounds log max rolls = let power = List.length rolls - 1 match accumulateDiceRolls log rolls power 0 with | Some (result, _) when result >= 1 && result <= max -> Some result | _ -> None ── fsharp ────────────────────────────────────────────────────────────────────── //// test rollWithinBounds (Some (printfn "%s")) 2000 [[ 1; 5; 4; 4; 5 ]] |> _assertEqual (Some 995) ── [ 22.47ms - stdout ] ──────────────────────────────────────────────────────── │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 1 │ accumulateDiceRolls / power: 3 / acc: 0 / roll: 5 / value: 864 │ accumulateDiceRolls / power: 2 / acc: 864 / roll: 4 / value: 108 │ accumulateDiceRolls / power: 1 / acc: 972 / roll: 4 / value: 18 │ accumulateDiceRolls / power: 0 / acc: 990 / roll: 5 / value: 4 │ accumulateDiceRolls / power: -1 / acc: 994 │ Some 995 │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test rollWithinBounds (Some (printfn "%s")) 2000 [[ 2; 2; 6; 4; 5 ]] |> _assertEqual (Some 1715) ── [ 21.74ms - stdout ] ──────────────────────────────────────────────────────── │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 2 / value: 1296 │ accumulateDiceRolls / power: 3 / acc: 1296 / roll: 2 / value: 216 │ accumulateDiceRolls / power: 2 / acc: 1512 / roll: 6 / value: 180 │ accumulateDiceRolls / power: 1 / acc: 1692 / roll: 4 / value: 18 │ accumulateDiceRolls / power: 0 / acc: 1710 / roll: 5 / value: 4 │ accumulateDiceRolls / power: -1 / acc: 1714 │ Some 1715 │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test rollWithinBounds (Some (printfn "%s")) 2000 [[ 4; 1; 1; 2; 3 ]] |> _assertEqual None ── [ 21.22ms - stdout ] ──────────────────────────────────────────────────────── │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 4 / value: 3888 │ accumulateDiceRolls / power: 3 / acc: 3888 / roll: 1 │ accumulateDiceRolls / power: 2 / acc: 3888 / roll: 1 │ accumulateDiceRolls / power: 1 / acc: 3888 / roll: 2 / value: 6 │ accumulateDiceRolls / power: 0 / acc: 3894 / roll: 3 / value: 2 │ accumulateDiceRolls / power: -1 / acc: 3896 │ <null> │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## calculateDiceCount ── fsharp ────────────────────────────────────────────────────────────────────── let inline calculateDiceCount log max = let rec loop n p = if p < max then loop (n + 1) (p * 6) else log |> Option.iter ((|>) $"calculateDiceCount / max: {max} / n: {n} / p: {p}") n if max = 1 then 1 else loop 0 1 ── fsharp ────────────────────────────────────────────────────────────────────── //// test calculateDiceCount (Some (printfn "%s")) 36 |> _assertEqual 2 ── [ 24.43ms - stdout ] ──────────────────────────────────────────────────────── │ calculateDiceCount / max: 36 / n: 2 / p: 36 │ 2 │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test calculateDiceCount (Some (printfn "%s")) 7777 |> _assertEqual 6 ── [ 23.58ms - stdout ] ──────────────────────────────────────────────────────── │ calculateDiceCount / max: 7777 / n: 6 / p: 46656 │ 6 │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## rollDice ── fsharp ────────────────────────────────────────────────────────────────────── #if FABLE_COMPILER_RUST let rollDice () : int = #if !WASM && !CONTRACT Fable.Core.RustInterop.emitRustExpr () "rand::Rng::gen_range(&mut rand::thread_rng(), 1..7)" #else 1 #endif #else let private random = System.Random () let rollDice () = random.Next (1, 7) #endif ── markdown ──────────────────────────────────────────────────────────────────── │ ## rotateNumber ── fsharp ────────────────────────────────────────────────────────────────────── let rotateNumber max n = (n - 1 + max) % max + 1 ── markdown ──────────────────────────────────────────────────────────────────── │ ## rotateNumbers ── fsharp ────────────────────────────────────────────────────────────────────── let rotateNumbers max items = items |> Seq.map (rotateNumber max) ── fsharp ────────────────────────────────────────────────────────────────────── //// test [[ -1 .. 14 ]] |> rotateNumbers 6 |> Seq.toList |> _assertEqual [[ 5; 6; 1; 2; 3; 4; 5; 6; 1; 2; 3; 4; 5; 6; 1; 2 ]] ── [ 34.24ms - stdout ] ──────────────────────────────────────────────────────── │ [5; 6; 1; 2; 3; 4; 5; 6; 1; 2; 3; 4; 5; 6; 1; 2] │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## createSequentialRoller ── fsharp ────────────────────────────────────────────────────────────────────── let createSequentialRoller list = let mutable currentIndex = 0 fun () -> match list |> List.tryItem currentIndex with | Some item -> currentIndex <- currentIndex + 1 item | None -> failwith "createSequentialRoller / End of list" ── markdown ──────────────────────────────────────────────────────────────────── │ ## rollProgressively ── fsharp ────────────────────────────────────────────────────────────────────── let rollProgressively log roll reroll max = let power = (calculateDiceCount log max) - 1 let rec loop rolls size = if size < power + 1 then loop (roll () :: rolls) (size + 1) else match accumulateDiceRolls log rolls power 0 with | Some (result, _) when result <= max -> result | _ when reroll -> loop (List.init power (fun _ -> roll ())) power | _ -> loop (roll () :: rolls) (size + 1) loop [[]] 0 ── fsharp ────────────────────────────────────────────────────────────────────── //// test rollProgressively None rollDice false 1 |> _assertEqual 1 ── [ 16.19ms - stdout ] ──────────────────────────────────────────────────────── │ 1 │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let sequentialRoll = createSequentialRoller [[ 5; 4; 4; 5; 1 ]] rollProgressively (Some (printfn "%s")) sequentialRoll false 2000 |> _assertEqual 995 ── [ 19.72ms - stdout ] ──────────────────────────────────────────────────────── │ calculateDiceCount / max: 2000 / n: 5 / p: 7776 │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 1 │ accumulateDiceRolls / power: 3 / acc: 0 / roll: 5 / value: 864 │ accumulateDiceRolls / power: 2 / acc: 864 / roll: 4 / value: 108 │ accumulateDiceRolls / power: 1 / acc: 972 / roll: 4 / value: 18 │ accumulateDiceRolls / power: 0 / acc: 990 / roll: 5 / value: 4 │ accumulateDiceRolls / power: -1 / acc: 994 │ 995 │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let sequentialRoll = createSequentialRoller [[ 5; 4; 4; 5; 2 ]] fun () -> rollProgressively (Some (printfn "%s")) sequentialRoll false 2000 |> ignore |> _throwsC (fun ex _ -> SpiralSm.format_exception ex |> _assertEqual "System.Exception: createSequentialRoller / End of list" ) ── [ 45.39ms - stdout ] ──────────────────────────────────────────────────────── │ <fun:it@5-13> │ │ calculateDiceCount / max: 2000 / n: 5 / p: 7776 │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 2 / value: 1296 │ accumulateDiceRolls / power: 3 / acc: 1296 / roll: 5 / value: 864 │ accumulateDiceRolls / power: 2 / acc: 2160 / roll: 4 / value: 108 │ accumulateDiceRolls / power: 1 / acc: 2268 / roll: 4 / value: 18 │ accumulateDiceRolls / power: 0 / acc: 2286 / roll: 5 / value: 4 │ accumulateDiceRolls / power: -1 / acc: 2290 │ "System.Exception: createSequentialRoller / End of list" │ │ ── fsharp - ignored ──────────────────────────────────────────────────────────── //// ignore rollProgressively (Some (printfn "%s")) rollDice false 2000 ── fsharp - ignored ──────────────────────────────────────────────────────────── //// ignore rollProgressively (Some (printfn "%s")) rollDice true 2000 ── fsharp - ignored ──────────────────────────────────────────────────────────── //// ignore [[| 1 .. 10000 |]] |> Array.Parallel.map (fun _ -> rollProgressively None rollDice false 10) |> Array.Parallel.groupBy id |> Array.Parallel.map (fun (k, v) -> k, v.Length) |> Array.Parallel.sortBy fst ── fsharp - ignored ──────────────────────────────────────────────────────────── //// ignore [[| 1 .. 10000 |]] |> Array.Parallel.map (fun _ -> rollProgressively None rollDice true 10) |> Array.Parallel.groupBy id |> Array.Parallel.map (fun (k, v) -> k, v.Length) |> Array.Parallel.sortBy fst ── fsharp ────────────────────────────────────────────────────────────────────── //// test [[| 1 .. 100 |]] |> Array.Parallel.iter (fun n -> [[| 0 .. 1 |]] |> Array.Parallel.iter (fun reroll -> [[| 1 .. 3500 |]] |> Array.Parallel.map (fun _ -> rollProgressively None rollDice (reroll = 1) n) |> Array.Parallel.groupBy id |> Array.length |> __assertEqual false n ) ) ── fsharp - ignored ──────────────────────────────────────────────────────────── //// ignore let inline rollMax fn max n = [[| 1 .. n |]] |> Array.Parallel.map (fun _ -> fn max) |> Array.Parallel.groupBy id |> Array.Parallel.map (fun (_, v) -> v.Length) let rec rollN max n even current = let roll = rollMax (rollProgressively None rollDice true) max n if roll |> Array.Parallel.forall ((=) even) then current else rollN max n even (current + 1) let run () = let max = 10 let n = 30 let even = (n / max) |> int rollN max n even 0 // run () ── fsharp - ignored ──────────────────────────────────────────────────────────── //// ignore let run () = let max = 10 let n = 30 let even = (n / max) |> int [[| 1 .. 100 |]] |> Array.Parallel.map (fun i -> let roll = rollN max n even 0 printfn $"i: {i} / roll: {roll}" float roll ) |> Array.Parallel.average // run () ── markdown ──────────────────────────────────────────────────────────────────── │ ## FsCheck (test) ── fsharp ────────────────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/fscheck/3.0.1/lib/netstandard2.0/FsCheck. dll" #r @"../../../../../../../.nuget/packages/expecto.fscheck/11.0.0-alpha8/lib/net6.0/ Expecto.FsCheck3.dll" ── fsharp ────────────────────────────────────────────────────────────────────── //// test type ValorDado = | Um | Dois | Tres | Quatro | Cinco | Seis type Aspecto = | Passado of string | Presente of string | Futuro of string | Desafios of string | Recursos of string | ResultadoProjetado of string | InfluenciaExterna of string type Contexto = | Amor of string | Trabalho of string | Saude of string | Dinheiro of string type Universo = | Real of string | Virtual of string | Espiritual of string type Caracteristica = | Aspecto of Aspecto | Contexto of Contexto | Universo of Universo | DadoRolado of ValorDado type Interacao = | Conflito | Parceria | Crescimento | Estagnacao | Separacao | Harmonia | Desafio | Colaboracao | Progresso | Mudanca | Sucesso type Interpretacao = | Interpretacao of Caracteristica * Interacao * Caracteristica type SistemaDivinacao = | SistemaDivinacao of Interpretacao list * Caracteristica let config = { Expecto.FsCheckConfig.defaultConfig with maxTest = 10000 } let shuffleList xs seed = let rnd = Random (seed) xs |> List.map (fun x -> rnd.Next(), x) |> List.sortBy fst |> List.map snd type Complexity = Simple | Moderate | Complex type Duration = Short | Medium | Long type Dice = D1 of int | D2 of int type Task = | Task of Complexity * Duration * Task | NoTask let durationOfFocus (d1: int) (d2: int) = match d1 + d2 with | sum when sum <= 4 -> Short | sum when sum <= 8 -> Medium | _ -> Long let complexityOfTask (d1: int) (d2: int) = match d1 * d2 with | product when product <= 12 -> Simple | product when product <= 24 -> Moderate | _ -> Complex let rec generateTaskList d1 d2 previousTask = match d1, d2 with | d1, d2 when d1 > 0 && d2 > 0 -> let complexity = complexityOfTask d1 d2 let duration = durationOfFocus d1 d2 let newTask = Task (complexity, duration, previousTask) generateTaskList (d1 - 1) (d2 - 1) newTask | _, _ -> previousTask let properties = Expecto.Tests.testList "FsCheck samples" [[ let sistemaDivinacao (interpretacoes: Interpretacao list, caracteristica: Caracteristica) = let interpretacoes = interpretacoes |> List.sort SistemaDivinacao (interpretacoes, caracteristica) Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao is consistent" <| fun (interpretacoes: Interpretacao list, caracteristica: Caracteristica) -> sistemaDivinacao (interpretacoes, caracteristica) = sistemaDivinacao (interpretacoes, caracteristica) Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao is variant under permutation" <| fun (input: Interpretacao list, caracteristica: Caracteristica) -> let seed = 42 let shuffledInput = shuffleList input seed sistemaDivinacao (input, caracteristica) = sistemaDivinacao (shuffledInput, caracteristica) Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao can handle lists of any size" <| fun (input: Interpretacao list, caracteristica: Caracteristica) -> let sistema = sistemaDivinacao (input, caracteristica) sistema <> Unchecked.defaultof<_> Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao is invariant under data transformations" <| fun (input: Interpretacao list, caracteristica: Caracteristica, newInterpretation: Interpretacao) -> let containsNewInterpretation = input |> List.contains newInterpretation let modifiedInput = if containsNewInterpretation then input else newInterpretation :: input if containsNewInterpretation then sistemaDivinacao (List.sort input, caracteristica) = sistemaDivinacao (List.sort modifiedInput, caracteristica) else sistemaDivinacao (List.sort input, caracteristica) <> sistemaDivinacao (List.sort modifiedInput, caracteristica) let focusDurationProperty = FsCheck.FSharp.Prop.forAll (FsCheck.FSharp.Arb.fromGen (FsCheck.FSharp.Gen.map2 (fun d1 d2 -> (d1, d2)) (FsCheck.FSharp.Gen.choose (1, 6)) (FsCheck.FSharp.Gen.choose (1, 6)))) <| fun (d1, d2) -> let expected = match d1 + d2 with | sum when sum <= 4 -> Short | sum when sum <= 8 -> Medium | _ -> Long let actual = durationOfFocus d1 d2 expected = actual let taskComplexityProperty = FsCheck.FSharp.Prop.forAll (FsCheck.FSharp.Arb.fromGen (FsCheck.FSharp.Gen.map2 (fun d1 d2 -> (d1, d2)) (FsCheck.FSharp.Gen.choose (1, 6)) (FsCheck.FSharp.Gen.choose (1, 6)))) <| fun (d1, d2) -> let expected = match d1 * d2 with | product when product <= 12 -> Simple | product when product <= 24 -> Moderate | _ -> Complex let actual = complexityOfTask d1 d2 expected = actual let taskListLengthProperty = FsCheck.FSharp.Prop.forAll (FsCheck.FSharp.Arb.fromGen (FsCheck.FSharp.Gen.map2 (fun d1 d2 -> (d1, d2)) (FsCheck.FSharp.Gen.choose (1, 6)) (FsCheck.FSharp.Gen.choose (1, 6)))) <| fun (d1, d2) -> let taskList = generateTaskList d1 d2 NoTask let rec taskListLength taskList = match taskList with | Task (_, _, nextTask) -> 1 + taskListLength nextTask | NoTask -> 0 let actual = taskListLength taskList let expected = min d1 d2 expected = actual Expecto.ExpectoFsCheck.testProperty "Duration of focus should be calculated correctly" focusDurationProperty Expecto.ExpectoFsCheck.testProperty "Task complexity should be calculated correctly" taskComplexityProperty Expecto.ExpectoFsCheck.testProperty "Task list should have the correct length" taskListLengthProperty ]] let dice1 = 6 let dice2 = 6 let taskList = generateTaskList dice1 dice2 NoTask let rec printTaskList taskList = match taskList with | Task (complexity, duration, nextTask) -> printfn "Complexidade: %A, Duração: %A" complexity duration printTaskList nextTask | NoTask -> () printTaskList taskList Expecto.Tests.runTestsWithCLIArgs [[]] [[||]] properties |> _assertEqual 0 ── [ 623.54ms - stderr ] ─────────────────────────────────────────────────────── │ Complexidade: Simple, Duração: Short │ Complexidade: Simple, Duração: Short │ Complexidade: Simple, Duração: Medium │ Complexidade: Moderate, Duração: Medium │ Complexidade: Complex, Duração: Long │ Complexidade: Complex, Duração: Long │ NotebookRunner.RunNotebookAsync / exiting... 3 ── markdown ──────────────────────────────────────────────────────────────────── │ ## main ── fsharp ────────────────────────────────────────────────────────────────────── let main args = let result = rollProgressively (Some (printfn "%s")) rollDice true (System.Int32.MaxValue / 10) trace Debug (fun () -> $"main / result: {result}") _locals 0 NotebookRunner.RunNotebookAsync / exiting... 2 NotebookRunner.RunNotebookAsync / exiting... 1 NotebookRunner.RunNotebookAsync / event: CommandFailed: System.IO.FileNotFoundException: Could not load file or assembly 'Mono.Cecil, Version=0.11.4.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e'. The system cannot find the file specified. File name: 'Mono.Cecil, Version=0.11.4.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e' at <StartupCode$Expecto>.$Expecto.Impl..cctor() at Expecto.Impl.get_defaultPrinter@257.Invoke(Test _tests) in C:\workspaces\dotnet\expecto\Expecto\Expecto.Impl.fs:line 258 at Expecto.Impl.runEvalWithCancel@743.Invoke(Unit unitVar) in C:\workspaces\dotnet\expecto\Expecto\Expecto.Impl.fs:line 743 at Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[T,TResult](AsyncActivati on`1 ctxt, TResult result1, FSharpFunc`2 part2) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510 at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112 --- End of stack trace from previous location --- at Microsoft.FSharp.Control.AsyncResult`1.Commit() in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 454 at Microsoft.FSharp.Control.AsyncPrimitives.QueueAsyncAndWaitForResultSynchronously [a](CancellationToken token, FSharpAsync`1 computation, FSharpOption`1 timeout) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1139 at Microsoft.FSharp.Control.AsyncPrimitives.RunSynchronously[T](CancellationToken cancellationToken, FSharpAsync`1 computation, FSharpOption`1 timeout) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1166 at Microsoft.FSharp.Control.FSharpAsync.RunSynchronously[T](FSharpAsync`1 computation, FSharpOption`1 timeout, FSharpOption`1 cancellationToken) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1515 at Expecto.Tests.runTestsWithCancel@617(CancellationToken ct, ExpectoConfig config, Test tests) in C:\workspaces\dotnet\expecto\Expecto\Expecto.fs:line 635 at Expecto.Tests.runTestsWithCLIArgsAndCancel(CancellationToken ct, IEnumerable`1 cliArgs, String[] args, Test tests) in C:\workspaces\dotnet\expecto\Expecto\Expecto.fs:line 660 at Expecto.Tests.runTestsWithCLIArgs(IEnumerable`1 cliArgs, String[] args, Test tests) in C:\workspaces\dotnet\expecto\Expecto\Expecto.fs:line 668 at <StartupCode$FSI_0052>.$FSI_0052.main@() at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor) at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr) note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace # Invoke-Block / $retry: 1/3 / $Location: ../../deps/polyglot/lib/fsharp / Get-Location: C:\home\git\dice\deps\polyglot\lib\fsharp / $OnError: Stop / $exitcode: -1073740791 / $Error: '' / $ScriptBlock: '. ../../deps/spiral/workspace/target/release/spiral$(_exe) dib --path "$ScriptDir/$projectName.dib"' 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "C:\home\git\dice\lib\fsharp/dice_fsharp.dib"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/dice/lib/fsharp/dice_fsharp.dib", "--output-path", "c:/home/git/dice/lib/fsharp/dice_fsharp.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/dice/lib/fsharp/dice_fsharp.dib" --output-path "c:/home/git/dice/lib/fsharp/dice_fsharp.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # DiceFSharp (Dice) > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if !INTERACTIVE > open Polyglot > open Lib > #endif > > open Common > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## sixthPowerSequence > > ── fsharp ────────────────────────────────────────────────────────────────────── > let sixthPowerSequence () = > 1 |> Seq.unfold (fun state -> Some (state, state * 6)) |> Seq.cache > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > sixthPowerSequence () > |> Seq.take 8 > |> Seq.toList > |> _assertEqual [[ 1; 6; 36; 216; 1296; 7776; 46656; 279936 ]] > > ── [ 63.41ms - stdout ] ──────────────────────────────────────────────────────── > │ [1; 6; 36; 216; 1296; 7776; 46656; 279936] > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## accumulateDiceRolls > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec accumulateDiceRolls log rolls power acc = > match rolls with > | _ when power < 0 -> > log |> Option.iter ((|>) $"accumulateDiceRolls / power: {power} / acc: > {acc}") > Some (acc + 1, rolls) > | [[]] -> None > | roll :: rest when roll > 1 -> > let coeff = sixthPowerSequence () |> Seq.item power > let value = (roll - 1) * coeff > log |> Option.iter ((|>) $"accumulateDiceRolls / \ > power: {power} / acc: {acc} / roll: {roll} / value: {value}" > ) > accumulateDiceRolls log rest (power - 1) (acc + value) > | roll :: rest -> > log |> Option.iter ((|>) $"accumulateDiceRolls / power: {power} / acc: > {acc} / roll: {roll}") > accumulateDiceRolls log rest (power - 1) acc > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > accumulateDiceRolls (Some (printfn "%s")) [[ 6; 5; 4; 3; 2 ]] 0 1000 > |> _assertEqual (Some (1006, [[ 5; 4; 3; 2 ]])) > > ── [ 30.62ms - stdout ] ──────────────────────────────────────────────────────── > │ accumulateDiceRolls / power: 0 / acc: 1000 / roll: 6 / value: > 5 > │ accumulateDiceRolls / power: -1 / acc: 1005 > │ Some (1006, [5; 4; 3; 2]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > accumulateDiceRolls (Some (printfn "%s")) [[ 6; 5; 4; 3; 2 ]] 1 1000 > |> _assertEqual (Some (1035, [[ 4; 3; 2 ]])) > > ── [ 25.52ms - stdout ] ──────────────────────────────────────────────────────── > │ accumulateDiceRolls / power: 1 / acc: 1000 / roll: 6 / value: > 30 > │ accumulateDiceRolls / power: 0 / acc: 1030 / roll: 5 / value: > 4 > │ accumulateDiceRolls / power: -1 / acc: 1034 > │ Some (1035, [4; 3; 2]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > accumulateDiceRolls (Some (printfn "%s")) [[ 6; 5; 4; 3; 2 ]] 2 1000 > |> _assertEqual (Some (1208, [[ 3; 2 ]])) > > ── [ 23.00ms - stdout ] ──────────────────────────────────────────────────────── > │ accumulateDiceRolls / power: 2 / acc: 1000 / roll: 6 / value: > 180 > │ accumulateDiceRolls / power: 1 / acc: 1180 / roll: 5 / value: > 24 > │ accumulateDiceRolls / power: 0 / acc: 1204 / roll: 4 / value: > 3 > │ accumulateDiceRolls / power: -1 / acc: 1207 > │ Some (1208, [3; 2]) > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rollWithinBounds > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rollWithinBounds log max rolls = > let power = List.length rolls - 1 > match accumulateDiceRolls log rolls power 0 with > | Some (result, _) when result >= 1 && result <= max -> Some result > | _ -> None > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > rollWithinBounds (Some (printfn "%s")) 2000 [[ 1; 5; 4; 4; 5 ]] > |> _assertEqual (Some 995) > > ── [ 20.20ms - stdout ] ──────────────────────────────────────────────────────── > │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 1 > │ accumulateDiceRolls / power: 3 / acc: 0 / roll: 5 / value: > 864 > │ accumulateDiceRolls / power: 2 / acc: 864 / roll: 4 / value: > 108 > │ accumulateDiceRolls / power: 1 / acc: 972 / roll: 4 / value: > 18 > │ accumulateDiceRolls / power: 0 / acc: 990 / roll: 5 / value: > 4 > │ accumulateDiceRolls / power: -1 / acc: 994 > │ Some 995 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > rollWithinBounds (Some (printfn "%s")) 2000 [[ 2; 2; 6; 4; 5 ]] > |> _assertEqual (Some 1715) > > ── [ 19.28ms - stdout ] ──────────────────────────────────────────────────────── > │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 2 / value: > 1296 > │ accumulateDiceRolls / power: 3 / acc: 1296 / roll: 2 / value: > 216 > │ accumulateDiceRolls / power: 2 / acc: 1512 / roll: 6 / value: > 180 > │ accumulateDiceRolls / power: 1 / acc: 1692 / roll: 4 / value: > 18 > │ accumulateDiceRolls / power: 0 / acc: 1710 / roll: 5 / value: > 4 > │ accumulateDiceRolls / power: -1 / acc: 1714 > │ Some 1715 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > rollWithinBounds (Some (printfn "%s")) 2000 [[ 4; 1; 1; 2; 3 ]] > |> _assertEqual None > > ── [ 18.31ms - stdout ] ──────────────────────────────────────────────────────── > │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 4 / value: > 3888 > │ accumulateDiceRolls / power: 3 / acc: 3888 / roll: 1 > │ accumulateDiceRolls / power: 2 / acc: 3888 / roll: 1 > │ accumulateDiceRolls / power: 1 / acc: 3888 / roll: 2 / value: > 6 > │ accumulateDiceRolls / power: 0 / acc: 3894 / roll: 3 / value: > 2 > │ accumulateDiceRolls / power: -1 / acc: 3896 > │ <null> > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## calculateDiceCount > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline calculateDiceCount log max = > let rec loop n p = > if p < max > then loop (n + 1) (p * 6) > else > log |> Option.iter ((|>) $"calculateDiceCount / max: {max} / n: {n} > / p: {p}") > n > if max = 1 > then 1 > else loop 0 1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > calculateDiceCount (Some (printfn "%s")) 36 > |> _assertEqual 2 > > ── [ 21.95ms - stdout ] ──────────────────────────────────────────────────────── > │ calculateDiceCount / max: 36 / n: 2 / p: 36 > │ 2 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > calculateDiceCount (Some (printfn "%s")) 7777 > |> _assertEqual 6 > > ── [ 23.23ms - stdout ] ──────────────────────────────────────────────────────── > │ calculateDiceCount / max: 7777 / n: 6 / p: 46656 > │ 6 > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rollDice > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if FABLE_COMPILER_RUST > let rollDice () : int = > #if !WASM && !CONTRACT > Fable.Core.RustInterop.emitRustExpr () "rand::Rng::gen_range(&mut > rand::thread_rng(), 1..7)" > #else > 1 > #endif > #else > let private random = System.Random () > let rollDice () = > random.Next (1, 7) > #endif > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rotateNumber > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rotateNumber max n = > (n - 1 + max) % max + 1 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rotateNumbers > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rotateNumbers max items = > items |> Seq.map (rotateNumber max) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > [[ -1 .. 14 ]] > |> rotateNumbers 6 > |> Seq.toList > |> _assertEqual [[ 5; 6; 1; 2; 3; 4; 5; 6; 1; 2; 3; 4; 5; 6; 1; 2 ]] > > ── [ 35.50ms - stdout ] ──────────────────────────────────────────────────────── > │ [5; 6; 1; 2; 3; 4; 5; 6; 1; 2; 3; 4; 5; 6; 1; 2] > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## createSequentialRoller > > ── fsharp ────────────────────────────────────────────────────────────────────── > let createSequentialRoller list = > let mutable currentIndex = 0 > fun () -> > match list |> List.tryItem currentIndex with > | Some item -> > currentIndex <- currentIndex + 1 > item > | None -> > failwith "createSequentialRoller / End of list" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rollProgressively > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rollProgressively log roll reroll max = > let power = (calculateDiceCount log max) - 1 > let rec loop rolls size = > if size < power + 1 > then loop (roll () :: rolls) (size + 1) > else > match accumulateDiceRolls log rolls power 0 with > | Some (result, _) when result <= max -> result > | _ when reroll -> loop (List.init power (fun _ -> roll ())) power > | _ -> loop (roll () :: rolls) (size + 1) > loop [[]] 0 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > rollProgressively None rollDice false 1 > |> _assertEqual 1 > > ── [ 16.18ms - stdout ] ──────────────────────────────────────────────────────── > │ 1 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let sequentialRoll = createSequentialRoller [[ 5; 4; 4; 5; 1 ]] > > rollProgressively (Some (printfn "%s")) sequentialRoll false 2000 > |> _assertEqual 995 > > ── [ 19.22ms - stdout ] ──────────────────────────────────────────────────────── > │ calculateDiceCount / max: 2000 / n: 5 / p: 7776 > │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 1 > │ accumulateDiceRolls / power: 3 / acc: 0 / roll: 5 / value: > 864 > │ accumulateDiceRolls / power: 2 / acc: 864 / roll: 4 / value: > 108 > │ accumulateDiceRolls / power: 1 / acc: 972 / roll: 4 / value: > 18 > │ accumulateDiceRolls / power: 0 / acc: 990 / roll: 5 / value: > 4 > │ accumulateDiceRolls / power: -1 / acc: 994 > │ 995 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let sequentialRoll = createSequentialRoller [[ 5; 4; 4; 5; 2 ]] > > fun () -> rollProgressively (Some (printfn "%s")) sequentialRoll false 2000 |> > ignore > |> _throwsC (fun ex _ -> > SpiralSm.format_exception ex > |> _assertEqual "System.Exception: createSequentialRoller / End of list" > ) > > ── [ 46.23ms - stdout ] ──────────────────────────────────────────────────────── > │ <fun:it@5-13> > │ > │ calculateDiceCount / max: 2000 / n: 5 / p: 7776 > │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 2 / value: > 1296 > │ accumulateDiceRolls / power: 3 / acc: 1296 / roll: 5 / value: > 864 > │ accumulateDiceRolls / power: 2 / acc: 2160 / roll: 4 / value: > 108 > │ accumulateDiceRolls / power: 1 / acc: 2268 / roll: 4 / value: > 18 > │ accumulateDiceRolls / power: 0 / acc: 2286 / roll: 5 / value: > 4 > │ accumulateDiceRolls / power: -1 / acc: 2290 > │ "System.Exception: createSequentialRoller / End of list" > │ > │ > > ── fsharp - ignored ──────────────────────────────────────────────────────────── > //// ignore > > rollProgressively (Some (printfn "%s")) rollDice false 2000 > > ── fsharp - ignored ──────────────────────────────────────────────────────────── > //// ignore > > rollProgressively (Some (printfn "%s")) rollDice true 2000 > > ── fsharp - ignored ──────────────────────────────────────────────────────────── > //// ignore > > [[| 1 .. 10000 |]] > |> Array.Parallel.map (fun _ -> rollProgressively None rollDice false 10) > |> Array.Parallel.groupBy id > |> Array.Parallel.map (fun (k, v) -> k, v.Length) > |> Array.Parallel.sortBy fst > > ── fsharp - ignored ──────────────────────────────────────────────────────────── > //// ignore > > [[| 1 .. 10000 |]] > |> Array.Parallel.map (fun _ -> rollProgressively None rollDice true 10) > |> Array.Parallel.groupBy id > |> Array.Parallel.map (fun (k, v) -> k, v.Length) > |> Array.Parallel.sortBy fst > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > [[| 1 .. 100 |]] > |> Array.Parallel.iter (fun n -> > [[| 0 .. 1 |]] > |> Array.Parallel.iter (fun reroll -> > [[| 1 .. 3500 |]] > |> Array.Parallel.map (fun _ -> rollProgressively None rollDice (reroll > = 1) n) > |> Array.Parallel.groupBy id > |> Array.length > |> __assertEqual false n > ) > ) > > ── fsharp - ignored ──────────────────────────────────────────────────────────── > //// ignore > > let inline rollMax fn max n = > [[| 1 .. n |]] > |> Array.Parallel.map (fun _ -> fn max) > |> Array.Parallel.groupBy id > |> Array.Parallel.map (fun (_, v) -> v.Length) > > let rec rollN max n even current = > let roll = rollMax (rollProgressively None rollDice true) max n > if roll |> Array.Parallel.forall ((=) even) > then current > else rollN max n even (current + 1) > > let run () = > let max = 10 > let n = 30 > let even = (n / max) |> int > > rollN max n even 0 > > // run () > > ── fsharp - ignored ──────────────────────────────────────────────────────────── > //// ignore > > let run () = > let max = 10 > let n = 30 > let even = (n / max) |> int > [[| 1 .. 100 |]] > |> Array.Parallel.map (fun i -> > let roll = rollN max n even 0 > printfn $"i: {i} / roll: {roll}" > float roll > ) > |> Array.Parallel.average > > // run () > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## FsCheck (test) > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fscheck/3.0.1/lib/netstandard2.0/FsCheck. > dll" > #r > @"../../../../../../../.nuget/packages/expecto.fscheck/11.0.0-alpha8/lib/net6.0/ > Expecto.FsCheck3.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > type ValorDado = > | Um > | Dois > | Tres > | Quatro > | Cinco > | Seis > > type Aspecto = > | Passado of string > | Presente of string > | Futuro of string > | Desafios of string > | Recursos of string > | ResultadoProjetado of string > | InfluenciaExterna of string > > type Contexto = > | Amor of string > | Trabalho of string > | Saude of string > | Dinheiro of string > > type Universo = > | Real of string > | Virtual of string > | Espiritual of string > > type Caracteristica = > | Aspecto of Aspecto > | Contexto of Contexto > | Universo of Universo > | DadoRolado of ValorDado > > type Interacao = > | Conflito > | Parceria > | Crescimento > | Estagnacao > | Separacao > | Harmonia > | Desafio > | Colaboracao > | Progresso > | Mudanca > | Sucesso > > type Interpretacao = > | Interpretacao of Caracteristica * Interacao * Caracteristica > > type SistemaDivinacao = > | SistemaDivinacao of Interpretacao list * Caracteristica > > let config = { Expecto.FsCheckConfig.defaultConfig with maxTest = 10000 } > > let shuffleList xs seed = > let rnd = Random (seed) > xs > |> List.map (fun x -> rnd.Next(), x) > |> List.sortBy fst > |> List.map snd > > > > > type Complexity = Simple | Moderate | Complex > type Duration = Short | Medium | Long > > type Dice = D1 of int | D2 of int > > type Task = > | Task of Complexity * Duration * Task > | NoTask > > let durationOfFocus (d1: int) (d2: int) = > match d1 + d2 with > | sum when sum <= 4 -> Short > | sum when sum <= 8 -> Medium > | _ -> Long > > let complexityOfTask (d1: int) (d2: int) = > match d1 * d2 with > | product when product <= 12 -> Simple > | product when product <= 24 -> Moderate > | _ -> Complex > > let rec generateTaskList d1 d2 previousTask = > match d1, d2 with > | d1, d2 when d1 > 0 && d2 > 0 -> > let complexity = complexityOfTask d1 d2 > let duration = durationOfFocus d1 d2 > let newTask = Task (complexity, duration, previousTask) > generateTaskList (d1 - 1) (d2 - 1) newTask > | _, _ -> previousTask > > > > > > let properties = > Expecto.Tests.testList "FsCheck samples" [[ > let sistemaDivinacao (interpretacoes: Interpretacao list, > caracteristica: Caracteristica) = > let interpretacoes = interpretacoes |> List.sort > SistemaDivinacao (interpretacoes, caracteristica) > > Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao > is consistent" <| > fun (interpretacoes: Interpretacao list, caracteristica: > Caracteristica) -> > sistemaDivinacao (interpretacoes, caracteristica) > = sistemaDivinacao (interpretacoes, caracteristica) > > Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao > is variant under permutation" <| > fun (input: Interpretacao list, caracteristica: Caracteristica) -> > let seed = 42 > let shuffledInput = shuffleList input seed > sistemaDivinacao (input, caracteristica) = sistemaDivinacao > (shuffledInput, caracteristica) > > Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao > can handle lists of any size" <| > fun (input: Interpretacao list, caracteristica: Caracteristica) -> > let sistema = sistemaDivinacao (input, caracteristica) > sistema <> Unchecked.defaultof<_> > > Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao > is invariant under data transformations" <| > fun (input: Interpretacao list, caracteristica: Caracteristica, > newInterpretation: Interpretacao) -> > let containsNewInterpretation = input |> List.contains > newInterpretation > let modifiedInput = > if containsNewInterpretation > then input > else newInterpretation :: input > if containsNewInterpretation > then sistemaDivinacao (List.sort input, caracteristica) > = sistemaDivinacao (List.sort modifiedInput, > caracteristica) > else sistemaDivinacao (List.sort input, caracteristica) > <> sistemaDivinacao (List.sort modifiedInput, > caracteristica) > > > > > > > let focusDurationProperty = > FsCheck.FSharp.Prop.forAll (FsCheck.FSharp.Arb.fromGen > (FsCheck.FSharp.Gen.map2 (fun d1 d2 -> (d1, d2)) (FsCheck.FSharp.Gen.choose (1, > 6)) (FsCheck.FSharp.Gen.choose (1, 6)))) <| fun (d1, d2) -> > let expected = > match d1 + d2 with > | sum when sum <= 4 -> Short > | sum when sum <= 8 -> Medium > | _ -> Long > let actual = durationOfFocus d1 d2 > expected = actual > > let taskComplexityProperty = > FsCheck.FSharp.Prop.forAll (FsCheck.FSharp.Arb.fromGen > (FsCheck.FSharp.Gen.map2 (fun d1 d2 -> (d1, d2)) (FsCheck.FSharp.Gen.choose (1, > 6)) (FsCheck.FSharp.Gen.choose (1, 6)))) <| fun (d1, d2) -> > let expected = > match d1 * d2 with > | product when product <= 12 -> Simple > | product when product <= 24 -> Moderate > | _ -> Complex > let actual = complexityOfTask d1 d2 > expected = actual > > let taskListLengthProperty = > FsCheck.FSharp.Prop.forAll (FsCheck.FSharp.Arb.fromGen > (FsCheck.FSharp.Gen.map2 (fun d1 d2 -> (d1, d2)) (FsCheck.FSharp.Gen.choose (1, > 6)) (FsCheck.FSharp.Gen.choose (1, 6)))) <| fun (d1, d2) -> > let taskList = generateTaskList d1 d2 NoTask > let rec taskListLength taskList = > match taskList with > | Task (_, _, nextTask) -> 1 + taskListLength nextTask > | NoTask -> 0 > let actual = taskListLength taskList > let expected = min d1 d2 > expected = actual > > > Expecto.ExpectoFsCheck.testProperty "Duration of focus should be > calculated correctly" focusDurationProperty > Expecto.ExpectoFsCheck.testProperty "Task complexity should be > calculated correctly" taskComplexityProperty > Expecto.ExpectoFsCheck.testProperty "Task list should have the correct > length" taskListLengthProperty > > > > ]] > > let dice1 = 6 > let dice2 = 6 > > let taskList = generateTaskList dice1 dice2 NoTask > > let rec printTaskList taskList = > match taskList with > | Task (complexity, duration, nextTask) -> > printfn "Complexidade: %A, Duração: %A" complexity duration > printTaskList nextTask > | NoTask -> () > > printTaskList taskList > > Expecto.Tests.runTestsWithCLIArgs [[]] [[||]] properties > |> _assertEqual 0 > > ── [ 656.31ms - stderr ] ─────────────────────────────────────────────────────── > │ Complexidade: Simple, Duração: Short > │ Complexidade: Simple, Duração: Short > │ Complexidade: Simple, Duração: Medium > │ Complexidade: Moderate, Duração: Medium > │ Complexidade: Complex, Duração: Long > │ Complexidade: Complex, Duração: Long > │ > NotebookRunner.RunNotebookAsync / exiting... 3 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## main > > ── fsharp ────────────────────────────────────────────────────────────────────── > let main args = > let result = rollProgressively (Some (printfn "%s")) rollDice true > (System.Int32.MaxValue / 10) > trace Debug (fun () -> $"main / result: {result}") _locals > 0 > NotebookRunner.RunNotebookAsync / exiting... 2 > NotebookRunner.RunNotebookAsync / exiting... 1 > NotebookRunner.RunNotebookAsync / event: CommandFailed: > System.IO.FileNotFoundException: Could not load file or assembly 'Mono.Cecil, > Version=0.11.4.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e'. The system > cannot find the file specified. > File name: 'Mono.Cecil, Version=0.11.4.0, Culture=neutral, > PublicKeyToken=50cebf1cceb9d05e' > at <StartupCode$Expecto>.$Expecto.Impl..cctor() > at Expecto.Impl.get_defaultPrinter@257.Invoke(Test _tests) in > C:\workspaces\dotnet\expecto\Expecto\Expecto.Impl.fs:line 258 > at Expecto.Impl.runEvalWithCancel@743.Invoke(Unit unitVar) in > C:\workspaces\dotnet\expecto\Expecto\Expecto.Impl.fs:line 743 > at > Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[T,TResult](AsyncActivati > on`1 ctxt, TResult result1, FSharpFunc`2 part2) in > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510 > at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) in > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112 > --- End of stack trace from previous location --- > at Microsoft.FSharp.Control.AsyncResult`1.Commit() in > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 454 > at > Microsoft.FSharp.Control.AsyncPrimitives.QueueAsyncAndWaitForResultSynchronously > [a](CancellationToken token, FSharpAsync`1 computation, FSharpOption`1 timeout) > in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1139 > at > Microsoft.FSharp.Control.AsyncPrimitives.RunSynchronously[T](CancellationToken > cancellationToken, FSharpAsync`1 computation, FSharpOption`1 timeout) in > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1166 > at Microsoft.FSharp.Control.FSharpAsync.RunSynchronously[T](FSharpAsync`1 > computation, FSharpOption`1 timeout, FSharpOption`1 cancellationToken) in > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1515 > at Expecto.Tests.runTestsWithCancel@617(CancellationToken ct, ExpectoConfig > config, Test tests) in C:\workspaces\dotnet\expecto\Expecto\Expecto.fs:line 635 > at Expecto.Tests.runTestsWithCLIArgsAndCancel(CancellationToken ct, > IEnumerable`1 cliArgs, String[] args, Test tests) in > C:\workspaces\dotnet\expecto\Expecto\Expecto.fs:line 660 > at Expecto.Tests.runTestsWithCLIArgs(IEnumerable`1 cliArgs, String[] args, > Test tests) in C:\workspaces\dotnet\expecto\Expecto\Expecto.fs:line 668 > at <StartupCode$FSI_0052>.$FSI_0052.main@() > at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, > Signature sig, Boolean isConstructor) > at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, > BindingFlags invokeAttr) 00:00:22 v #3 runtime.execute_with_options / result / { exit_code = -1; std_trace_length = 26177 } 00:00:22 d #4 spiral.run / dib / { exit_code = -1; result_length = 26177 } thread 'main' panicked at C:\home\git\spiral\apps\spiral\spiral.rs:16903:45: spiral.run / dib / exit_code: -1 / result: ── markdown ──────────────────────────────────────────────────────────────────── │ # DiceFSharp (Dice) ── fsharp ────────────────────────────────────────────────────────────────────── #if !INTERACTIVE open Polyglot open Lib #endif open Common ── markdown ──────────────────────────────────────────────────────────────────── │ ## sixthPowerSequence ── fsharp ────────────────────────────────────────────────────────────────────── let sixthPowerSequence () = 1 |> Seq.unfold (fun state -> Some (state, state * 6)) |> Seq.cache ── fsharp ────────────────────────────────────────────────────────────────────── //// test sixthPowerSequence () |> Seq.take 8 |> Seq.toList |> _assertEqual [[ 1; 6; 36; 216; 1296; 7776; 46656; 279936 ]] ── [ 63.41ms - stdout ] ──────────────────────────────────────────────────────── │ [1; 6; 36; 216; 1296; 7776; 46656; 279936] │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## accumulateDiceRolls ── fsharp ────────────────────────────────────────────────────────────────────── let rec accumulateDiceRolls log rolls power acc = match rolls with | _ when power < 0 -> log |> Option.iter ((|>) $"accumulateDiceRolls / power: {power} / acc: {acc}") Some (acc + 1, rolls) | [[]] -> None | roll :: rest when roll > 1 -> let coeff = sixthPowerSequence () |> Seq.item power let value = (roll - 1) * coeff log |> Option.iter ((|>) $"accumulateDiceRolls / \ power: {power} / acc: {acc} / roll: {roll} / value: {value}" ) accumulateDiceRolls log rest (power - 1) (acc + value) | roll :: rest -> log |> Option.iter ((|>) $"accumulateDiceRolls / power: {power} / acc: {acc} / roll: {roll}") accumulateDiceRolls log rest (power - 1) acc ── fsharp ────────────────────────────────────────────────────────────────────── //// test accumulateDiceRolls (Some (printfn "%s")) [[ 6; 5; 4; 3; 2 ]] 0 1000 |> _assertEqual (Some (1006, [[ 5; 4; 3; 2 ]])) ── [ 30.62ms - stdout ] ──────────────────────────────────────────────────────── │ accumulateDiceRolls / power: 0 / acc: 1000 / roll: 6 / value: 5 │ accumulateDiceRolls / power: -1 / acc: 1005 │ Some (1006, [5; 4; 3; 2]) │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test accumulateDiceRolls (Some (printfn "%s")) [[ 6; 5; 4; 3; 2 ]] 1 1000 |> _assertEqual (Some (1035, [[ 4; 3; 2 ]])) ── [ 25.52ms - stdout ] ──────────────────────────────────────────────────────── │ accumulateDiceRolls / power: 1 / acc: 1000 / roll: 6 / value: 30 │ accumulateDiceRolls / power: 0 / acc: 1030 / roll: 5 / value: 4 │ accumulateDiceRolls / power: -1 / acc: 1034 │ Some (1035, [4; 3; 2]) │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test accumulateDiceRolls (Some (printfn "%s")) [[ 6; 5; 4; 3; 2 ]] 2 1000 |> _assertEqual (Some (1208, [[ 3; 2 ]])) ── [ 23.00ms - stdout ] ──────────────────────────────────────────────────────── │ accumulateDiceRolls / power: 2 / acc: 1000 / roll: 6 / value: 180 │ accumulateDiceRolls / power: 1 / acc: 1180 / roll: 5 / value: 24 │ accumulateDiceRolls / power: 0 / acc: 1204 / roll: 4 / value: 3 │ accumulateDiceRolls / power: -1 / acc: 1207 │ Some (1208, [3; 2]) │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## rollWithinBounds ── fsharp ────────────────────────────────────────────────────────────────────── let rollWithinBounds log max rolls = let power = List.length rolls - 1 match accumulateDiceRolls log rolls power 0 with | Some (result, _) when result >= 1 && result <= max -> Some result | _ -> None ── fsharp ────────────────────────────────────────────────────────────────────── //// test rollWithinBounds (Some (printfn "%s")) 2000 [[ 1; 5; 4; 4; 5 ]] |> _assertEqual (Some 995) ── [ 20.20ms - stdout ] ──────────────────────────────────────────────────────── │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 1 │ accumulateDiceRolls / power: 3 / acc: 0 / roll: 5 / value: 864 │ accumulateDiceRolls / power: 2 / acc: 864 / roll: 4 / value: 108 │ accumulateDiceRolls / power: 1 / acc: 972 / roll: 4 / value: 18 │ accumulateDiceRolls / power: 0 / acc: 990 / roll: 5 / value: 4 │ accumulateDiceRolls / power: -1 / acc: 994 │ Some 995 │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test rollWithinBounds (Some (printfn "%s")) 2000 [[ 2; 2; 6; 4; 5 ]] |> _assertEqual (Some 1715) ── [ 19.28ms - stdout ] ──────────────────────────────────────────────────────── │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 2 / value: 1296 │ accumulateDiceRolls / power: 3 / acc: 1296 / roll: 2 / value: 216 │ accumulateDiceRolls / power: 2 / acc: 1512 / roll: 6 / value: 180 │ accumulateDiceRolls / power: 1 / acc: 1692 / roll: 4 / value: 18 │ accumulateDiceRolls / power: 0 / acc: 1710 / roll: 5 / value: 4 │ accumulateDiceRolls / power: -1 / acc: 1714 │ Some 1715 │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test rollWithinBounds (Some (printfn "%s")) 2000 [[ 4; 1; 1; 2; 3 ]] |> _assertEqual None ── [ 18.31ms - stdout ] ──────────────────────────────────────────────────────── │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 4 / value: 3888 │ accumulateDiceRolls / power: 3 / acc: 3888 / roll: 1 │ accumulateDiceRolls / power: 2 / acc: 3888 / roll: 1 │ accumulateDiceRolls / power: 1 / acc: 3888 / roll: 2 / value: 6 │ accumulateDiceRolls / power: 0 / acc: 3894 / roll: 3 / value: 2 │ accumulateDiceRolls / power: -1 / acc: 3896 │ <null> │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## calculateDiceCount ── fsharp ────────────────────────────────────────────────────────────────────── let inline calculateDiceCount log max = let rec loop n p = if p < max then loop (n + 1) (p * 6) else log |> Option.iter ((|>) $"calculateDiceCount / max: {max} / n: {n} / p: {p}") n if max = 1 then 1 else loop 0 1 ── fsharp ────────────────────────────────────────────────────────────────────── //// test calculateDiceCount (Some (printfn "%s")) 36 |> _assertEqual 2 ── [ 21.95ms - stdout ] ──────────────────────────────────────────────────────── │ calculateDiceCount / max: 36 / n: 2 / p: 36 │ 2 │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test calculateDiceCount (Some (printfn "%s")) 7777 |> _assertEqual 6 ── [ 23.23ms - stdout ] ──────────────────────────────────────────────────────── │ calculateDiceCount / max: 7777 / n: 6 / p: 46656 │ 6 │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## rollDice ── fsharp ────────────────────────────────────────────────────────────────────── #if FABLE_COMPILER_RUST let rollDice () : int = #if !WASM && !CONTRACT Fable.Core.RustInterop.emitRustExpr () "rand::Rng::gen_range(&mut rand::thread_rng(), 1..7)" #else 1 #endif #else let private random = System.Random () let rollDice () = random.Next (1, 7) #endif ── markdown ──────────────────────────────────────────────────────────────────── │ ## rotateNumber ── fsharp ────────────────────────────────────────────────────────────────────── let rotateNumber max n = (n - 1 + max) % max + 1 ── markdown ──────────────────────────────────────────────────────────────────── │ ## rotateNumbers ── fsharp ────────────────────────────────────────────────────────────────────── let rotateNumbers max items = items |> Seq.map (rotateNumber max) ── fsharp ────────────────────────────────────────────────────────────────────── //// test [[ -1 .. 14 ]] |> rotateNumbers 6 |> Seq.toList |> _assertEqual [[ 5; 6; 1; 2; 3; 4; 5; 6; 1; 2; 3; 4; 5; 6; 1; 2 ]] ── [ 35.50ms - stdout ] ──────────────────────────────────────────────────────── │ [5; 6; 1; 2; 3; 4; 5; 6; 1; 2; 3; 4; 5; 6; 1; 2] │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## createSequentialRoller ── fsharp ────────────────────────────────────────────────────────────────────── let createSequentialRoller list = let mutable currentIndex = 0 fun () -> match list |> List.tryItem currentIndex with | Some item -> currentIndex <- currentIndex + 1 item | None -> failwith "createSequentialRoller / End of list" ── markdown ──────────────────────────────────────────────────────────────────── │ ## rollProgressively ── fsharp ────────────────────────────────────────────────────────────────────── let rollProgressively log roll reroll max = let power = (calculateDiceCount log max) - 1 let rec loop rolls size = if size < power + 1 then loop (roll () :: rolls) (size + 1) else match accumulateDiceRolls log rolls power 0 with | Some (result, _) when result <= max -> result | _ when reroll -> loop (List.init power (fun _ -> roll ())) power | _ -> loop (roll () :: rolls) (size + 1) loop [[]] 0 ── fsharp ────────────────────────────────────────────────────────────────────── //// test rollProgressively None rollDice false 1 |> _assertEqual 1 ── [ 16.18ms - stdout ] ──────────────────────────────────────────────────────── │ 1 │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let sequentialRoll = createSequentialRoller [[ 5; 4; 4; 5; 1 ]] rollProgressively (Some (printfn "%s")) sequentialRoll false 2000 |> _assertEqual 995 ── [ 19.22ms - stdout ] ──────────────────────────────────────────────────────── │ calculateDiceCount / max: 2000 / n: 5 / p: 7776 │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 1 │ accumulateDiceRolls / power: 3 / acc: 0 / roll: 5 / value: 864 │ accumulateDiceRolls / power: 2 / acc: 864 / roll: 4 / value: 108 │ accumulateDiceRolls / power: 1 / acc: 972 / roll: 4 / value: 18 │ accumulateDiceRolls / power: 0 / acc: 990 / roll: 5 / value: 4 │ accumulateDiceRolls / power: -1 / acc: 994 │ 995 │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let sequentialRoll = createSequentialRoller [[ 5; 4; 4; 5; 2 ]] fun () -> rollProgressively (Some (printfn "%s")) sequentialRoll false 2000 |> ignore |> _throwsC (fun ex _ -> SpiralSm.format_exception ex |> _assertEqual "System.Exception: createSequentialRoller / End of list" ) ── [ 46.23ms - stdout ] ──────────────────────────────────────────────────────── │ <fun:it@5-13> │ │ calculateDiceCount / max: 2000 / n: 5 / p: 7776 │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 2 / value: 1296 │ accumulateDiceRolls / power: 3 / acc: 1296 / roll: 5 / value: 864 │ accumulateDiceRolls / power: 2 / acc: 2160 / roll: 4 / value: 108 │ accumulateDiceRolls / power: 1 / acc: 2268 / roll: 4 / value: 18 │ accumulateDiceRolls / power: 0 / acc: 2286 / roll: 5 / value: 4 │ accumulateDiceRolls / power: -1 / acc: 2290 │ "System.Exception: createSequentialRoller / End of list" │ │ ── fsharp - ignored ──────────────────────────────────────────────────────────── //// ignore rollProgressively (Some (printfn "%s")) rollDice false 2000 ── fsharp - ignored ──────────────────────────────────────────────────────────── //// ignore rollProgressively (Some (printfn "%s")) rollDice true 2000 ── fsharp - ignored ──────────────────────────────────────────────────────────── //// ignore [[| 1 .. 10000 |]] |> Array.Parallel.map (fun _ -> rollProgressively None rollDice false 10) |> Array.Parallel.groupBy id |> Array.Parallel.map (fun (k, v) -> k, v.Length) |> Array.Parallel.sortBy fst ── fsharp - ignored ──────────────────────────────────────────────────────────── //// ignore [[| 1 .. 10000 |]] |> Array.Parallel.map (fun _ -> rollProgressively None rollDice true 10) |> Array.Parallel.groupBy id |> Array.Parallel.map (fun (k, v) -> k, v.Length) |> Array.Parallel.sortBy fst ── fsharp ────────────────────────────────────────────────────────────────────── //// test [[| 1 .. 100 |]] |> Array.Parallel.iter (fun n -> [[| 0 .. 1 |]] |> Array.Parallel.iter (fun reroll -> [[| 1 .. 3500 |]] |> Array.Parallel.map (fun _ -> rollProgressively None rollDice (reroll = 1) n) |> Array.Parallel.groupBy id |> Array.length |> __assertEqual false n ) ) ── fsharp - ignored ──────────────────────────────────────────────────────────── //// ignore let inline rollMax fn max n = [[| 1 .. n |]] |> Array.Parallel.map (fun _ -> fn max) |> Array.Parallel.groupBy id |> Array.Parallel.map (fun (_, v) -> v.Length) let rec rollN max n even current = let roll = rollMax (rollProgressively None rollDice true) max n if roll |> Array.Parallel.forall ((=) even) then current else rollN max n even (current + 1) let run () = let max = 10 let n = 30 let even = (n / max) |> int rollN max n even 0 // run () ── fsharp - ignored ──────────────────────────────────────────────────────────── //// ignore let run () = let max = 10 let n = 30 let even = (n / max) |> int [[| 1 .. 100 |]] |> Array.Parallel.map (fun i -> let roll = rollN max n even 0 printfn $"i: {i} / roll: {roll}" float roll ) |> Array.Parallel.average // run () ── markdown ──────────────────────────────────────────────────────────────────── │ ## FsCheck (test) ── fsharp ────────────────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/fscheck/3.0.1/lib/netstandard2.0/FsCheck. dll" #r @"../../../../../../../.nuget/packages/expecto.fscheck/11.0.0-alpha8/lib/net6.0/ Expecto.FsCheck3.dll" ── fsharp ────────────────────────────────────────────────────────────────────── //// test type ValorDado = | Um | Dois | Tres | Quatro | Cinco | Seis type Aspecto = | Passado of string | Presente of string | Futuro of string | Desafios of string | Recursos of string | ResultadoProjetado of string | InfluenciaExterna of string type Contexto = | Amor of string | Trabalho of string | Saude of string | Dinheiro of string type Universo = | Real of string | Virtual of string | Espiritual of string type Caracteristica = | Aspecto of Aspecto | Contexto of Contexto | Universo of Universo | DadoRolado of ValorDado type Interacao = | Conflito | Parceria | Crescimento | Estagnacao | Separacao | Harmonia | Desafio | Colaboracao | Progresso | Mudanca | Sucesso type Interpretacao = | Interpretacao of Caracteristica * Interacao * Caracteristica type SistemaDivinacao = | SistemaDivinacao of Interpretacao list * Caracteristica let config = { Expecto.FsCheckConfig.defaultConfig with maxTest = 10000 } let shuffleList xs seed = let rnd = Random (seed) xs |> List.map (fun x -> rnd.Next(), x) |> List.sortBy fst |> List.map snd type Complexity = Simple | Moderate | Complex type Duration = Short | Medium | Long type Dice = D1 of int | D2 of int type Task = | Task of Complexity * Duration * Task | NoTask let durationOfFocus (d1: int) (d2: int) = match d1 + d2 with | sum when sum <= 4 -> Short | sum when sum <= 8 -> Medium | _ -> Long let complexityOfTask (d1: int) (d2: int) = match d1 * d2 with | product when product <= 12 -> Simple | product when product <= 24 -> Moderate | _ -> Complex let rec generateTaskList d1 d2 previousTask = match d1, d2 with | d1, d2 when d1 > 0 && d2 > 0 -> let complexity = complexityOfTask d1 d2 let duration = durationOfFocus d1 d2 let newTask = Task (complexity, duration, previousTask) generateTaskList (d1 - 1) (d2 - 1) newTask | _, _ -> previousTask let properties = Expecto.Tests.testList "FsCheck samples" [[ let sistemaDivinacao (interpretacoes: Interpretacao list, caracteristica: Caracteristica) = let interpretacoes = interpretacoes |> List.sort SistemaDivinacao (interpretacoes, caracteristica) Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao is consistent" <| fun (interpretacoes: Interpretacao list, caracteristica: Caracteristica) -> sistemaDivinacao (interpretacoes, caracteristica) = sistemaDivinacao (interpretacoes, caracteristica) Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao is variant under permutation" <| fun (input: Interpretacao list, caracteristica: Caracteristica) -> let seed = 42 let shuffledInput = shuffleList input seed sistemaDivinacao (input, caracteristica) = sistemaDivinacao (shuffledInput, caracteristica) Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao can handle lists of any size" <| fun (input: Interpretacao list, caracteristica: Caracteristica) -> let sistema = sistemaDivinacao (input, caracteristica) sistema <> Unchecked.defaultof<_> Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao is invariant under data transformations" <| fun (input: Interpretacao list, caracteristica: Caracteristica, newInterpretation: Interpretacao) -> let containsNewInterpretation = input |> List.contains newInterpretation let modifiedInput = if containsNewInterpretation then input else newInterpretation :: input if containsNewInterpretation then sistemaDivinacao (List.sort input, caracteristica) = sistemaDivinacao (List.sort modifiedInput, caracteristica) else sistemaDivinacao (List.sort input, caracteristica) <> sistemaDivinacao (List.sort modifiedInput, caracteristica) let focusDurationProperty = FsCheck.FSharp.Prop.forAll (FsCheck.FSharp.Arb.fromGen (FsCheck.FSharp.Gen.map2 (fun d1 d2 -> (d1, d2)) (FsCheck.FSharp.Gen.choose (1, 6)) (FsCheck.FSharp.Gen.choose (1, 6)))) <| fun (d1, d2) -> let expected = match d1 + d2 with | sum when sum <= 4 -> Short | sum when sum <= 8 -> Medium | _ -> Long let actual = durationOfFocus d1 d2 expected = actual let taskComplexityProperty = FsCheck.FSharp.Prop.forAll (FsCheck.FSharp.Arb.fromGen (FsCheck.FSharp.Gen.map2 (fun d1 d2 -> (d1, d2)) (FsCheck.FSharp.Gen.choose (1, 6)) (FsCheck.FSharp.Gen.choose (1, 6)))) <| fun (d1, d2) -> let expected = match d1 * d2 with | product when product <= 12 -> Simple | product when product <= 24 -> Moderate | _ -> Complex let actual = complexityOfTask d1 d2 expected = actual let taskListLengthProperty = FsCheck.FSharp.Prop.forAll (FsCheck.FSharp.Arb.fromGen (FsCheck.FSharp.Gen.map2 (fun d1 d2 -> (d1, d2)) (FsCheck.FSharp.Gen.choose (1, 6)) (FsCheck.FSharp.Gen.choose (1, 6)))) <| fun (d1, d2) -> let taskList = generateTaskList d1 d2 NoTask let rec taskListLength taskList = match taskList with | Task (_, _, nextTask) -> 1 + taskListLength nextTask | NoTask -> 0 let actual = taskListLength taskList let expected = min d1 d2 expected = actual Expecto.ExpectoFsCheck.testProperty "Duration of focus should be calculated correctly" focusDurationProperty Expecto.ExpectoFsCheck.testProperty "Task complexity should be calculated correctly" taskComplexityProperty Expecto.ExpectoFsCheck.testProperty "Task list should have the correct length" taskListLengthProperty ]] let dice1 = 6 let dice2 = 6 let taskList = generateTaskList dice1 dice2 NoTask let rec printTaskList taskList = match taskList with | Task (complexity, duration, nextTask) -> printfn "Complexidade: %A, Duração: %A" complexity duration printTaskList nextTask | NoTask -> () printTaskList taskList Expecto.Tests.runTestsWithCLIArgs [[]] [[||]] properties |> _assertEqual 0 ── [ 656.31ms - stderr ] ─────────────────────────────────────────────────────── │ Complexidade: Simple, Duração: Short │ Complexidade: Simple, Duração: Short │ Complexidade: Simple, Duração: Medium │ Complexidade: Moderate, Duração: Medium │ Complexidade: Complex, Duração: Long │ Complexidade: Complex, Duração: Long │ NotebookRunner.RunNotebookAsync / exiting... 3 ── markdown ──────────────────────────────────────────────────────────────────── │ ## main ── fsharp ────────────────────────────────────────────────────────────────────── let main args = let result = rollProgressively (Some (printfn "%s")) rollDice true (System.Int32.MaxValue / 10) trace Debug (fun () -> $"main / result: {result}") _locals 0 NotebookRunner.RunNotebookAsync / exiting... 2 NotebookRunner.RunNotebookAsync / exiting... 1 NotebookRunner.RunNotebookAsync / event: CommandFailed: System.IO.FileNotFoundException: Could not load file or assembly 'Mono.Cecil, Version=0.11.4.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e'. The system cannot find the file specified. File name: 'Mono.Cecil, Version=0.11.4.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e' at <StartupCode$Expecto>.$Expecto.Impl..cctor() at Expecto.Impl.get_defaultPrinter@257.Invoke(Test _tests) in C:\workspaces\dotnet\expecto\Expecto\Expecto.Impl.fs:line 258 at Expecto.Impl.runEvalWithCancel@743.Invoke(Unit unitVar) in C:\workspaces\dotnet\expecto\Expecto\Expecto.Impl.fs:line 743 at Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[T,TResult](AsyncActivati on`1 ctxt, TResult result1, FSharpFunc`2 part2) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510 at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112 --- End of stack trace from previous location --- at Microsoft.FSharp.Control.AsyncResult`1.Commit() in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 454 at Microsoft.FSharp.Control.AsyncPrimitives.QueueAsyncAndWaitForResultSynchronously [a](CancellationToken token, FSharpAsync`1 computation, FSharpOption`1 timeout) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1139 at Microsoft.FSharp.Control.AsyncPrimitives.RunSynchronously[T](CancellationToken cancellationToken, FSharpAsync`1 computation, FSharpOption`1 timeout) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1166 at Microsoft.FSharp.Control.FSharpAsync.RunSynchronously[T](FSharpAsync`1 computation, FSharpOption`1 timeout, FSharpOption`1 cancellationToken) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1515 at Expecto.Tests.runTestsWithCancel@617(CancellationToken ct, ExpectoConfig config, Test tests) in C:\workspaces\dotnet\expecto\Expecto\Expecto.fs:line 635 at Expecto.Tests.runTestsWithCLIArgsAndCancel(CancellationToken ct, IEnumerable`1 cliArgs, String[] args, Test tests) in C:\workspaces\dotnet\expecto\Expecto\Expecto.fs:line 660 at Expecto.Tests.runTestsWithCLIArgs(IEnumerable`1 cliArgs, String[] args, Test tests) in C:\workspaces\dotnet\expecto\Expecto\Expecto.fs:line 668 at <StartupCode$FSI_0052>.$FSI_0052.main@() at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor) at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr) note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace # Invoke-Block / $retry: 2/3 / $Location: ../../deps/polyglot/lib/fsharp / Get-Location: C:\home\git\dice\deps\polyglot\lib\fsharp / $OnError: Stop / $exitcode: -1073740791 / $Error: '' / $ScriptBlock: '. ../../deps/spiral/workspace/target/release/spiral$(_exe) dib --path "$ScriptDir/$projectName.dib"' 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "C:\home\git\dice\lib\fsharp/dice_fsharp.dib"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "c:/home/git/dice/lib/fsharp/dice_fsharp.dib", "--output-path", "c:/home/git/dice/lib/fsharp/dice_fsharp.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "c:/home/git/dice/lib/fsharp/dice_fsharp.dib" --output-path "c:/home/git/dice/lib/fsharp/dice_fsharp.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # DiceFSharp (Dice) > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if !INTERACTIVE > open Polyglot > open Lib > #endif > > open Common > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## sixthPowerSequence > > ── fsharp ────────────────────────────────────────────────────────────────────── > let sixthPowerSequence () = > 1 |> Seq.unfold (fun state -> Some (state, state * 6)) |> Seq.cache > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > sixthPowerSequence () > |> Seq.take 8 > |> Seq.toList > |> _assertEqual [[ 1; 6; 36; 216; 1296; 7776; 46656; 279936 ]] > > ── [ 65.65ms - stdout ] ──────────────────────────────────────────────────────── > │ [1; 6; 36; 216; 1296; 7776; 46656; 279936] > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## accumulateDiceRolls > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec accumulateDiceRolls log rolls power acc = > match rolls with > | _ when power < 0 -> > log |> Option.iter ((|>) $"accumulateDiceRolls / power: {power} / acc: > {acc}") > Some (acc + 1, rolls) > | [[]] -> None > | roll :: rest when roll > 1 -> > let coeff = sixthPowerSequence () |> Seq.item power > let value = (roll - 1) * coeff > log |> Option.iter ((|>) $"accumulateDiceRolls / \ > power: {power} / acc: {acc} / roll: {roll} / value: {value}" > ) > accumulateDiceRolls log rest (power - 1) (acc + value) > | roll :: rest -> > log |> Option.iter ((|>) $"accumulateDiceRolls / power: {power} / acc: > {acc} / roll: {roll}") > accumulateDiceRolls log rest (power - 1) acc > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > accumulateDiceRolls (Some (printfn "%s")) [[ 6; 5; 4; 3; 2 ]] 0 1000 > |> _assertEqual (Some (1006, [[ 5; 4; 3; 2 ]])) > > ── [ 31.56ms - stdout ] ──────────────────────────────────────────────────────── > │ accumulateDiceRolls / power: 0 / acc: 1000 / roll: 6 / value: > 5 > │ accumulateDiceRolls / power: -1 / acc: 1005 > │ Some (1006, [5; 4; 3; 2]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > accumulateDiceRolls (Some (printfn "%s")) [[ 6; 5; 4; 3; 2 ]] 1 1000 > |> _assertEqual (Some (1035, [[ 4; 3; 2 ]])) > > ── [ 21.83ms - stdout ] ──────────────────────────────────────────────────────── > │ accumulateDiceRolls / power: 1 / acc: 1000 / roll: 6 / value: > 30 > │ accumulateDiceRolls / power: 0 / acc: 1030 / roll: 5 / value: > 4 > │ accumulateDiceRolls / power: -1 / acc: 1034 > │ Some (1035, [4; 3; 2]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > accumulateDiceRolls (Some (printfn "%s")) [[ 6; 5; 4; 3; 2 ]] 2 1000 > |> _assertEqual (Some (1208, [[ 3; 2 ]])) > > ── [ 21.55ms - stdout ] ──────────────────────────────────────────────────────── > │ accumulateDiceRolls / power: 2 / acc: 1000 / roll: 6 / value: > 180 > │ accumulateDiceRolls / power: 1 / acc: 1180 / roll: 5 / value: > 24 > │ accumulateDiceRolls / power: 0 / acc: 1204 / roll: 4 / value: > 3 > │ accumulateDiceRolls / power: -1 / acc: 1207 > │ Some (1208, [3; 2]) > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rollWithinBounds > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rollWithinBounds log max rolls = > let power = List.length rolls - 1 > match accumulateDiceRolls log rolls power 0 with > | Some (result, _) when result >= 1 && result <= max -> Some result > | _ -> None > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > rollWithinBounds (Some (printfn "%s")) 2000 [[ 1; 5; 4; 4; 5 ]] > |> _assertEqual (Some 995) > > ── [ 20.76ms - stdout ] ──────────────────────────────────────────────────────── > │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 1 > │ accumulateDiceRolls / power: 3 / acc: 0 / roll: 5 / value: > 864 > │ accumulateDiceRolls / power: 2 / acc: 864 / roll: 4 / value: > 108 > │ accumulateDiceRolls / power: 1 / acc: 972 / roll: 4 / value: > 18 > │ accumulateDiceRolls / power: 0 / acc: 990 / roll: 5 / value: > 4 > │ accumulateDiceRolls / power: -1 / acc: 994 > │ Some 995 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > rollWithinBounds (Some (printfn "%s")) 2000 [[ 2; 2; 6; 4; 5 ]] > |> _assertEqual (Some 1715) > > ── [ 19.71ms - stdout ] ──────────────────────────────────────────────────────── > │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 2 / value: > 1296 > │ accumulateDiceRolls / power: 3 / acc: 1296 / roll: 2 / value: > 216 > │ accumulateDiceRolls / power: 2 / acc: 1512 / roll: 6 / value: > 180 > │ accumulateDiceRolls / power: 1 / acc: 1692 / roll: 4 / value: > 18 > │ accumulateDiceRolls / power: 0 / acc: 1710 / roll: 5 / value: > 4 > │ accumulateDiceRolls / power: -1 / acc: 1714 > │ Some 1715 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > rollWithinBounds (Some (printfn "%s")) 2000 [[ 4; 1; 1; 2; 3 ]] > |> _assertEqual None > > ── [ 19.64ms - stdout ] ──────────────────────────────────────────────────────── > │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 4 / value: > 3888 > │ accumulateDiceRolls / power: 3 / acc: 3888 / roll: 1 > │ accumulateDiceRolls / power: 2 / acc: 3888 / roll: 1 > │ accumulateDiceRolls / power: 1 / acc: 3888 / roll: 2 / value: > 6 > │ accumulateDiceRolls / power: 0 / acc: 3894 / roll: 3 / value: > 2 > │ accumulateDiceRolls / power: -1 / acc: 3896 > │ <null> > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## calculateDiceCount > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline calculateDiceCount log max = > let rec loop n p = > if p < max > then loop (n + 1) (p * 6) > else > log |> Option.iter ((|>) $"calculateDiceCount / max: {max} / n: {n} > / p: {p}") > n > if max = 1 > then 1 > else loop 0 1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > calculateDiceCount (Some (printfn "%s")) 36 > |> _assertEqual 2 > > ── [ 28.83ms - stdout ] ──────────────────────────────────────────────────────── > │ calculateDiceCount / max: 36 / n: 2 / p: 36 > │ 2 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > calculateDiceCount (Some (printfn "%s")) 7777 > |> _assertEqual 6 > > ── [ 20.77ms - stdout ] ──────────────────────────────────────────────────────── > │ calculateDiceCount / max: 7777 / n: 6 / p: 46656 > │ 6 > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rollDice > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if FABLE_COMPILER_RUST > let rollDice () : int = > #if !WASM && !CONTRACT > Fable.Core.RustInterop.emitRustExpr () "rand::Rng::gen_range(&mut > rand::thread_rng(), 1..7)" > #else > 1 > #endif > #else > let private random = System.Random () > let rollDice () = > random.Next (1, 7) > #endif > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rotateNumber > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rotateNumber max n = > (n - 1 + max) % max + 1 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rotateNumbers > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rotateNumbers max items = > items |> Seq.map (rotateNumber max) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > [[ -1 .. 14 ]] > |> rotateNumbers 6 > |> Seq.toList > |> _assertEqual [[ 5; 6; 1; 2; 3; 4; 5; 6; 1; 2; 3; 4; 5; 6; 1; 2 ]] > > ── [ 34.62ms - stdout ] ──────────────────────────────────────────────────────── > │ [5; 6; 1; 2; 3; 4; 5; 6; 1; 2; 3; 4; 5; 6; 1; 2] > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## createSequentialRoller > > ── fsharp ────────────────────────────────────────────────────────────────────── > let createSequentialRoller list = > let mutable currentIndex = 0 > fun () -> > match list |> List.tryItem currentIndex with > | Some item -> > currentIndex <- currentIndex + 1 > item > | None -> > failwith "createSequentialRoller / End of list" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rollProgressively > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rollProgressively log roll reroll max = > let power = (calculateDiceCount log max) - 1 > let rec loop rolls size = > if size < power + 1 > then loop (roll () :: rolls) (size + 1) > else > match accumulateDiceRolls log rolls power 0 with > | Some (result, _) when result <= max -> result > | _ when reroll -> loop (List.init power (fun _ -> roll ())) power > | _ -> loop (roll () :: rolls) (size + 1) > loop [[]] 0 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > rollProgressively None rollDice false 1 > |> _assertEqual 1 > > ── [ 16.92ms - stdout ] ──────────────────────────────────────────────────────── > │ 1 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let sequentialRoll = createSequentialRoller [[ 5; 4; 4; 5; 1 ]] > > rollProgressively (Some (printfn "%s")) sequentialRoll false 2000 > |> _assertEqual 995 > > ── [ 20.04ms - stdout ] ──────────────────────────────────────────────────────── > │ calculateDiceCount / max: 2000 / n: 5 / p: 7776 > │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 1 > │ accumulateDiceRolls / power: 3 / acc: 0 / roll: 5 / value: > 864 > │ accumulateDiceRolls / power: 2 / acc: 864 / roll: 4 / value: > 108 > │ accumulateDiceRolls / power: 1 / acc: 972 / roll: 4 / value: > 18 > │ accumulateDiceRolls / power: 0 / acc: 990 / roll: 5 / value: > 4 > │ accumulateDiceRolls / power: -1 / acc: 994 > │ 995 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let sequentialRoll = createSequentialRoller [[ 5; 4; 4; 5; 2 ]] > > fun () -> rollProgressively (Some (printfn "%s")) sequentialRoll false 2000 |> > ignore > |> _throwsC (fun ex _ -> > SpiralSm.format_exception ex > |> _assertEqual "System.Exception: createSequentialRoller / End of list" > ) > > ── [ 46.37ms - stdout ] ──────────────────────────────────────────────────────── > │ <fun:it@5-13> > │ > │ calculateDiceCount / max: 2000 / n: 5 / p: 7776 > │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 2 / value: > 1296 > │ accumulateDiceRolls / power: 3 / acc: 1296 / roll: 5 / value: > 864 > │ accumulateDiceRolls / power: 2 / acc: 2160 / roll: 4 / value: > 108 > │ accumulateDiceRolls / power: 1 / acc: 2268 / roll: 4 / value: > 18 > │ accumulateDiceRolls / power: 0 / acc: 2286 / roll: 5 / value: > 4 > │ accumulateDiceRolls / power: -1 / acc: 2290 > │ "System.Exception: createSequentialRoller / End of list" > │ > │ > > ── fsharp - ignored ──────────────────────────────────────────────────────────── > //// ignore > > rollProgressively (Some (printfn "%s")) rollDice false 2000 > > ── fsharp - ignored ──────────────────────────────────────────────────────────── > //// ignore > > rollProgressively (Some (printfn "%s")) rollDice true 2000 > > ── fsharp - ignored ──────────────────────────────────────────────────────────── > //// ignore > > [[| 1 .. 10000 |]] > |> Array.Parallel.map (fun _ -> rollProgressively None rollDice false 10) > |> Array.Parallel.groupBy id > |> Array.Parallel.map (fun (k, v) -> k, v.Length) > |> Array.Parallel.sortBy fst > > ── fsharp - ignored ──────────────────────────────────────────────────────────── > //// ignore > > [[| 1 .. 10000 |]] > |> Array.Parallel.map (fun _ -> rollProgressively None rollDice true 10) > |> Array.Parallel.groupBy id > |> Array.Parallel.map (fun (k, v) -> k, v.Length) > |> Array.Parallel.sortBy fst > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > [[| 1 .. 100 |]] > |> Array.Parallel.iter (fun n -> > [[| 0 .. 1 |]] > |> Array.Parallel.iter (fun reroll -> > [[| 1 .. 3500 |]] > |> Array.Parallel.map (fun _ -> rollProgressively None rollDice (reroll > = 1) n) > |> Array.Parallel.groupBy id > |> Array.length > |> __assertEqual false n > ) > ) > > ── fsharp - ignored ──────────────────────────────────────────────────────────── > //// ignore > > let inline rollMax fn max n = > [[| 1 .. n |]] > |> Array.Parallel.map (fun _ -> fn max) > |> Array.Parallel.groupBy id > |> Array.Parallel.map (fun (_, v) -> v.Length) > > let rec rollN max n even current = > let roll = rollMax (rollProgressively None rollDice true) max n > if roll |> Array.Parallel.forall ((=) even) > then current > else rollN max n even (current + 1) > > let run () = > let max = 10 > let n = 30 > let even = (n / max) |> int > > rollN max n even 0 > > // run () > > ── fsharp - ignored ──────────────────────────────────────────────────────────── > //// ignore > > let run () = > let max = 10 > let n = 30 > let even = (n / max) |> int > [[| 1 .. 100 |]] > |> Array.Parallel.map (fun i -> > let roll = rollN max n even 0 > printfn $"i: {i} / roll: {roll}" > float roll > ) > |> Array.Parallel.average > > // run () > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## FsCheck (test) > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fscheck/3.0.1/lib/netstandard2.0/FsCheck. > dll" > #r > @"../../../../../../../.nuget/packages/expecto.fscheck/11.0.0-alpha8/lib/net6.0/ > Expecto.FsCheck3.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > type ValorDado = > | Um > | Dois > | Tres > | Quatro > | Cinco > | Seis > > type Aspecto = > | Passado of string > | Presente of string > | Futuro of string > | Desafios of string > | Recursos of string > | ResultadoProjetado of string > | InfluenciaExterna of string > > type Contexto = > | Amor of string > | Trabalho of string > | Saude of string > | Dinheiro of string > > type Universo = > | Real of string > | Virtual of string > | Espiritual of string > > type Caracteristica = > | Aspecto of Aspecto > | Contexto of Contexto > | Universo of Universo > | DadoRolado of ValorDado > > type Interacao = > | Conflito > | Parceria > | Crescimento > | Estagnacao > | Separacao > | Harmonia > | Desafio > | Colaboracao > | Progresso > | Mudanca > | Sucesso > > type Interpretacao = > | Interpretacao of Caracteristica * Interacao * Caracteristica > > type SistemaDivinacao = > | SistemaDivinacao of Interpretacao list * Caracteristica > > let config = { Expecto.FsCheckConfig.defaultConfig with maxTest = 10000 } > > let shuffleList xs seed = > let rnd = Random (seed) > xs > |> List.map (fun x -> rnd.Next(), x) > |> List.sortBy fst > |> List.map snd > > > > > type Complexity = Simple | Moderate | Complex > type Duration = Short | Medium | Long > > type Dice = D1 of int | D2 of int > > type Task = > | Task of Complexity * Duration * Task > | NoTask > > let durationOfFocus (d1: int) (d2: int) = > match d1 + d2 with > | sum when sum <= 4 -> Short > | sum when sum <= 8 -> Medium > | _ -> Long > > let complexityOfTask (d1: int) (d2: int) = > match d1 * d2 with > | product when product <= 12 -> Simple > | product when product <= 24 -> Moderate > | _ -> Complex > > let rec generateTaskList d1 d2 previousTask = > match d1, d2 with > | d1, d2 when d1 > 0 && d2 > 0 -> > let complexity = complexityOfTask d1 d2 > let duration = durationOfFocus d1 d2 > let newTask = Task (complexity, duration, previousTask) > generateTaskList (d1 - 1) (d2 - 1) newTask > | _, _ -> previousTask > > > > > > let properties = > Expecto.Tests.testList "FsCheck samples" [[ > let sistemaDivinacao (interpretacoes: Interpretacao list, > caracteristica: Caracteristica) = > let interpretacoes = interpretacoes |> List.sort > SistemaDivinacao (interpretacoes, caracteristica) > > Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao > is consistent" <| > fun (interpretacoes: Interpretacao list, caracteristica: > Caracteristica) -> > sistemaDivinacao (interpretacoes, caracteristica) > = sistemaDivinacao (interpretacoes, caracteristica) > > Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao > is variant under permutation" <| > fun (input: Interpretacao list, caracteristica: Caracteristica) -> > let seed = 42 > let shuffledInput = shuffleList input seed > sistemaDivinacao (input, caracteristica) = sistemaDivinacao > (shuffledInput, caracteristica) > > Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao > can handle lists of any size" <| > fun (input: Interpretacao list, caracteristica: Caracteristica) -> > let sistema = sistemaDivinacao (input, caracteristica) > sistema <> Unchecked.defaultof<_> > > Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao > is invariant under data transformations" <| > fun (input: Interpretacao list, caracteristica: Caracteristica, > newInterpretation: Interpretacao) -> > let containsNewInterpretation = input |> List.contains > newInterpretation > let modifiedInput = > if containsNewInterpretation > then input > else newInterpretation :: input > if containsNewInterpretation > then sistemaDivinacao (List.sort input, caracteristica) > = sistemaDivinacao (List.sort modifiedInput, > caracteristica) > else sistemaDivinacao (List.sort input, caracteristica) > <> sistemaDivinacao (List.sort modifiedInput, > caracteristica) > > > > > > > let focusDurationProperty = > FsCheck.FSharp.Prop.forAll (FsCheck.FSharp.Arb.fromGen > (FsCheck.FSharp.Gen.map2 (fun d1 d2 -> (d1, d2)) (FsCheck.FSharp.Gen.choose (1, > 6)) (FsCheck.FSharp.Gen.choose (1, 6)))) <| fun (d1, d2) -> > let expected = > match d1 + d2 with > | sum when sum <= 4 -> Short > | sum when sum <= 8 -> Medium > | _ -> Long > let actual = durationOfFocus d1 d2 > expected = actual > > let taskComplexityProperty = > FsCheck.FSharp.Prop.forAll (FsCheck.FSharp.Arb.fromGen > (FsCheck.FSharp.Gen.map2 (fun d1 d2 -> (d1, d2)) (FsCheck.FSharp.Gen.choose (1, > 6)) (FsCheck.FSharp.Gen.choose (1, 6)))) <| fun (d1, d2) -> > let expected = > match d1 * d2 with > | product when product <= 12 -> Simple > | product when product <= 24 -> Moderate > | _ -> Complex > let actual = complexityOfTask d1 d2 > expected = actual > > let taskListLengthProperty = > FsCheck.FSharp.Prop.forAll (FsCheck.FSharp.Arb.fromGen > (FsCheck.FSharp.Gen.map2 (fun d1 d2 -> (d1, d2)) (FsCheck.FSharp.Gen.choose (1, > 6)) (FsCheck.FSharp.Gen.choose (1, 6)))) <| fun (d1, d2) -> > let taskList = generateTaskList d1 d2 NoTask > let rec taskListLength taskList = > match taskList with > | Task (_, _, nextTask) -> 1 + taskListLength nextTask > | NoTask -> 0 > let actual = taskListLength taskList > let expected = min d1 d2 > expected = actual > > > Expecto.ExpectoFsCheck.testProperty "Duration of focus should be > calculated correctly" focusDurationProperty > Expecto.ExpectoFsCheck.testProperty "Task complexity should be > calculated correctly" taskComplexityProperty > Expecto.ExpectoFsCheck.testProperty "Task list should have the correct > length" taskListLengthProperty > > > > ]] > > let dice1 = 6 > let dice2 = 6 > > let taskList = generateTaskList dice1 dice2 NoTask > > let rec printTaskList taskList = > match taskList with > | Task (complexity, duration, nextTask) -> > printfn "Complexidade: %A, Duração: %A" complexity duration > printTaskList nextTask > | NoTask -> () > > printTaskList taskList > > Expecto.Tests.runTestsWithCLIArgs [[]] [[||]] properties > |> _assertEqual 0 > > ── [ 626.37ms - stderr ] ─────────────────────────────────────────────────────── > │ Complexidade: Simple, Duração: Short > │ Complexidade: Simple, Duração: Short > │ Complexidade: Simple, Duração: Medium > │ Complexidade: Moderate, Duração: Medium > │ Complexidade: Complex, Duração: Long > │ Complexidade: Complex, Duração: Long > │ > NotebookRunner.RunNotebookAsync / exiting... 3 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## main > > ── fsharp ────────────────────────────────────────────────────────────────────── > let main args = > let result = rollProgressively (Some (printfn "%s")) rollDice true > (System.Int32.MaxValue / 10) > trace Debug (fun () -> $"main / result: {result}") _locals > 0 > NotebookRunner.RunNotebookAsync / exiting... 2 > NotebookRunner.RunNotebookAsync / exiting... 1 > NotebookRunner.RunNotebookAsync / event: CommandFailed: > System.IO.FileNotFoundException: Could not load file or assembly 'Mono.Cecil, > Version=0.11.4.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e'. The system > cannot find the file specified. > File name: 'Mono.Cecil, Version=0.11.4.0, Culture=neutral, > PublicKeyToken=50cebf1cceb9d05e' > at <StartupCode$Expecto>.$Expecto.Impl..cctor() > at Expecto.Impl.get_defaultPrinter@257.Invoke(Test _tests) in > C:\workspaces\dotnet\expecto\Expecto\Expecto.Impl.fs:line 258 > at Expecto.Impl.runEvalWithCancel@743.Invoke(Unit unitVar) in > C:\workspaces\dotnet\expecto\Expecto\Expecto.Impl.fs:line 743 > at > Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[T,TResult](AsyncActivati > on`1 ctxt, TResult result1, FSharpFunc`2 part2) in > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510 > at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) in > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112 > --- End of stack trace from previous location --- > at Microsoft.FSharp.Control.AsyncResult`1.Commit() in > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 454 > at > Microsoft.FSharp.Control.AsyncPrimitives.QueueAsyncAndWaitForResultSynchronously > [a](CancellationToken token, FSharpAsync`1 computation, FSharpOption`1 timeout) > in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1139 > at > Microsoft.FSharp.Control.AsyncPrimitives.RunSynchronously[T](CancellationToken > cancellationToken, FSharpAsync`1 computation, FSharpOption`1 timeout) in > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1166 > at Microsoft.FSharp.Control.FSharpAsync.RunSynchronously[T](FSharpAsync`1 > computation, FSharpOption`1 timeout, FSharpOption`1 cancellationToken) in > D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1515 > at Expecto.Tests.runTestsWithCancel@617(CancellationToken ct, ExpectoConfig > config, Test tests) in C:\workspaces\dotnet\expecto\Expecto\Expecto.fs:line 635 > at Expecto.Tests.runTestsWithCLIArgsAndCancel(CancellationToken ct, > IEnumerable`1 cliArgs, String[] args, Test tests) in > C:\workspaces\dotnet\expecto\Expecto\Expecto.fs:line 660 > at Expecto.Tests.runTestsWithCLIArgs(IEnumerable`1 cliArgs, String[] args, > Test tests) in C:\workspaces\dotnet\expecto\Expecto\Expecto.fs:line 668 > at <StartupCode$FSI_0052>.$FSI_0052.main@() > at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, > Signature sig, Boolean isConstructor) > at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, > BindingFlags invokeAttr) 00:00:21 v #3 runtime.execute_with_options / result / { exit_code = -1; std_trace_length = 26177 } 00:00:21 d #4 spiral.run / dib / { exit_code = -1; result_length = 26177 } thread 'main' panicked at C:\home\git\spiral\apps\spiral\spiral.rs:16903:45: spiral.run / dib / exit_code: -1 / result: ── markdown ──────────────────────────────────────────────────────────────────── │ # DiceFSharp (Dice) ── fsharp ────────────────────────────────────────────────────────────────────── #if !INTERACTIVE open Polyglot open Lib #endif open Common ── markdown ──────────────────────────────────────────────────────────────────── │ ## sixthPowerSequence ── fsharp ────────────────────────────────────────────────────────────────────── let sixthPowerSequence () = 1 |> Seq.unfold (fun state -> Some (state, state * 6)) |> Seq.cache ── fsharp ────────────────────────────────────────────────────────────────────── //// test sixthPowerSequence () |> Seq.take 8 |> Seq.toList |> _assertEqual [[ 1; 6; 36; 216; 1296; 7776; 46656; 279936 ]] ── [ 65.65ms - stdout ] ──────────────────────────────────────────────────────── │ [1; 6; 36; 216; 1296; 7776; 46656; 279936] │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## accumulateDiceRolls ── fsharp ────────────────────────────────────────────────────────────────────── let rec accumulateDiceRolls log rolls power acc = match rolls with | _ when power < 0 -> log |> Option.iter ((|>) $"accumulateDiceRolls / power: {power} / acc: {acc}") Some (acc + 1, rolls) | [[]] -> None | roll :: rest when roll > 1 -> let coeff = sixthPowerSequence () |> Seq.item power let value = (roll - 1) * coeff log |> Option.iter ((|>) $"accumulateDiceRolls / \ power: {power} / acc: {acc} / roll: {roll} / value: {value}" ) accumulateDiceRolls log rest (power - 1) (acc + value) | roll :: rest -> log |> Option.iter ((|>) $"accumulateDiceRolls / power: {power} / acc: {acc} / roll: {roll}") accumulateDiceRolls log rest (power - 1) acc ── fsharp ────────────────────────────────────────────────────────────────────── //// test accumulateDiceRolls (Some (printfn "%s")) [[ 6; 5; 4; 3; 2 ]] 0 1000 |> _assertEqual (Some (1006, [[ 5; 4; 3; 2 ]])) ── [ 31.56ms - stdout ] ──────────────────────────────────────────────────────── │ accumulateDiceRolls / power: 0 / acc: 1000 / roll: 6 / value: 5 │ accumulateDiceRolls / power: -1 / acc: 1005 │ Some (1006, [5; 4; 3; 2]) │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test accumulateDiceRolls (Some (printfn "%s")) [[ 6; 5; 4; 3; 2 ]] 1 1000 |> _assertEqual (Some (1035, [[ 4; 3; 2 ]])) ── [ 21.83ms - stdout ] ──────────────────────────────────────────────────────── │ accumulateDiceRolls / power: 1 / acc: 1000 / roll: 6 / value: 30 │ accumulateDiceRolls / power: 0 / acc: 1030 / roll: 5 / value: 4 │ accumulateDiceRolls / power: -1 / acc: 1034 │ Some (1035, [4; 3; 2]) │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test accumulateDiceRolls (Some (printfn "%s")) [[ 6; 5; 4; 3; 2 ]] 2 1000 |> _assertEqual (Some (1208, [[ 3; 2 ]])) ── [ 21.55ms - stdout ] ──────────────────────────────────────────────────────── │ accumulateDiceRolls / power: 2 / acc: 1000 / roll: 6 / value: 180 │ accumulateDiceRolls / power: 1 / acc: 1180 / roll: 5 / value: 24 │ accumulateDiceRolls / power: 0 / acc: 1204 / roll: 4 / value: 3 │ accumulateDiceRolls / power: -1 / acc: 1207 │ Some (1208, [3; 2]) │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## rollWithinBounds ── fsharp ────────────────────────────────────────────────────────────────────── let rollWithinBounds log max rolls = let power = List.length rolls - 1 match accumulateDiceRolls log rolls power 0 with | Some (result, _) when result >= 1 && result <= max -> Some result | _ -> None ── fsharp ────────────────────────────────────────────────────────────────────── //// test rollWithinBounds (Some (printfn "%s")) 2000 [[ 1; 5; 4; 4; 5 ]] |> _assertEqual (Some 995) ── [ 20.76ms - stdout ] ──────────────────────────────────────────────────────── │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 1 │ accumulateDiceRolls / power: 3 / acc: 0 / roll: 5 / value: 864 │ accumulateDiceRolls / power: 2 / acc: 864 / roll: 4 / value: 108 │ accumulateDiceRolls / power: 1 / acc: 972 / roll: 4 / value: 18 │ accumulateDiceRolls / power: 0 / acc: 990 / roll: 5 / value: 4 │ accumulateDiceRolls / power: -1 / acc: 994 │ Some 995 │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test rollWithinBounds (Some (printfn "%s")) 2000 [[ 2; 2; 6; 4; 5 ]] |> _assertEqual (Some 1715) ── [ 19.71ms - stdout ] ──────────────────────────────────────────────────────── │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 2 / value: 1296 │ accumulateDiceRolls / power: 3 / acc: 1296 / roll: 2 / value: 216 │ accumulateDiceRolls / power: 2 / acc: 1512 / roll: 6 / value: 180 │ accumulateDiceRolls / power: 1 / acc: 1692 / roll: 4 / value: 18 │ accumulateDiceRolls / power: 0 / acc: 1710 / roll: 5 / value: 4 │ accumulateDiceRolls / power: -1 / acc: 1714 │ Some 1715 │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test rollWithinBounds (Some (printfn "%s")) 2000 [[ 4; 1; 1; 2; 3 ]] |> _assertEqual None ── [ 19.64ms - stdout ] ──────────────────────────────────────────────────────── │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 4 / value: 3888 │ accumulateDiceRolls / power: 3 / acc: 3888 / roll: 1 │ accumulateDiceRolls / power: 2 / acc: 3888 / roll: 1 │ accumulateDiceRolls / power: 1 / acc: 3888 / roll: 2 / value: 6 │ accumulateDiceRolls / power: 0 / acc: 3894 / roll: 3 / value: 2 │ accumulateDiceRolls / power: -1 / acc: 3896 │ <null> │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## calculateDiceCount ── fsharp ────────────────────────────────────────────────────────────────────── let inline calculateDiceCount log max = let rec loop n p = if p < max then loop (n + 1) (p * 6) else log |> Option.iter ((|>) $"calculateDiceCount / max: {max} / n: {n} / p: {p}") n if max = 1 then 1 else loop 0 1 ── fsharp ────────────────────────────────────────────────────────────────────── //// test calculateDiceCount (Some (printfn "%s")) 36 |> _assertEqual 2 ── [ 28.83ms - stdout ] ──────────────────────────────────────────────────────── │ calculateDiceCount / max: 36 / n: 2 / p: 36 │ 2 │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test calculateDiceCount (Some (printfn "%s")) 7777 |> _assertEqual 6 ── [ 20.77ms - stdout ] ──────────────────────────────────────────────────────── │ calculateDiceCount / max: 7777 / n: 6 / p: 46656 │ 6 │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## rollDice ── fsharp ────────────────────────────────────────────────────────────────────── #if FABLE_COMPILER_RUST let rollDice () : int = #if !WASM && !CONTRACT Fable.Core.RustInterop.emitRustExpr () "rand::Rng::gen_range(&mut rand::thread_rng(), 1..7)" #else 1 #endif #else let private random = System.Random () let rollDice () = random.Next (1, 7) #endif ── markdown ──────────────────────────────────────────────────────────────────── │ ## rotateNumber ── fsharp ────────────────────────────────────────────────────────────────────── let rotateNumber max n = (n - 1 + max) % max + 1 ── markdown ──────────────────────────────────────────────────────────────────── │ ## rotateNumbers ── fsharp ────────────────────────────────────────────────────────────────────── let rotateNumbers max items = items |> Seq.map (rotateNumber max) ── fsharp ────────────────────────────────────────────────────────────────────── //// test [[ -1 .. 14 ]] |> rotateNumbers 6 |> Seq.toList |> _assertEqual [[ 5; 6; 1; 2; 3; 4; 5; 6; 1; 2; 3; 4; 5; 6; 1; 2 ]] ── [ 34.62ms - stdout ] ──────────────────────────────────────────────────────── │ [5; 6; 1; 2; 3; 4; 5; 6; 1; 2; 3; 4; 5; 6; 1; 2] │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## createSequentialRoller ── fsharp ────────────────────────────────────────────────────────────────────── let createSequentialRoller list = let mutable currentIndex = 0 fun () -> match list |> List.tryItem currentIndex with | Some item -> currentIndex <- currentIndex + 1 item | None -> failwith "createSequentialRoller / End of list" ── markdown ──────────────────────────────────────────────────────────────────── │ ## rollProgressively ── fsharp ────────────────────────────────────────────────────────────────────── let rollProgressively log roll reroll max = let power = (calculateDiceCount log max) - 1 let rec loop rolls size = if size < power + 1 then loop (roll () :: rolls) (size + 1) else match accumulateDiceRolls log rolls power 0 with | Some (result, _) when result <= max -> result | _ when reroll -> loop (List.init power (fun _ -> roll ())) power | _ -> loop (roll () :: rolls) (size + 1) loop [[]] 0 ── fsharp ────────────────────────────────────────────────────────────────────── //// test rollProgressively None rollDice false 1 |> _assertEqual 1 ── [ 16.92ms - stdout ] ──────────────────────────────────────────────────────── │ 1 │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let sequentialRoll = createSequentialRoller [[ 5; 4; 4; 5; 1 ]] rollProgressively (Some (printfn "%s")) sequentialRoll false 2000 |> _assertEqual 995 ── [ 20.04ms - stdout ] ──────────────────────────────────────────────────────── │ calculateDiceCount / max: 2000 / n: 5 / p: 7776 │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 1 │ accumulateDiceRolls / power: 3 / acc: 0 / roll: 5 / value: 864 │ accumulateDiceRolls / power: 2 / acc: 864 / roll: 4 / value: 108 │ accumulateDiceRolls / power: 1 / acc: 972 / roll: 4 / value: 18 │ accumulateDiceRolls / power: 0 / acc: 990 / roll: 5 / value: 4 │ accumulateDiceRolls / power: -1 / acc: 994 │ 995 │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test let sequentialRoll = createSequentialRoller [[ 5; 4; 4; 5; 2 ]] fun () -> rollProgressively (Some (printfn "%s")) sequentialRoll false 2000 |> ignore |> _throwsC (fun ex _ -> SpiralSm.format_exception ex |> _assertEqual "System.Exception: createSequentialRoller / End of list" ) ── [ 46.37ms - stdout ] ──────────────────────────────────────────────────────── │ <fun:it@5-13> │ │ calculateDiceCount / max: 2000 / n: 5 / p: 7776 │ accumulateDiceRolls / power: 4 / acc: 0 / roll: 2 / value: 1296 │ accumulateDiceRolls / power: 3 / acc: 1296 / roll: 5 / value: 864 │ accumulateDiceRolls / power: 2 / acc: 2160 / roll: 4 / value: 108 │ accumulateDiceRolls / power: 1 / acc: 2268 / roll: 4 / value: 18 │ accumulateDiceRolls / power: 0 / acc: 2286 / roll: 5 / value: 4 │ accumulateDiceRolls / power: -1 / acc: 2290 │ "System.Exception: createSequentialRoller / End of list" │ │ ── fsharp - ignored ──────────────────────────────────────────────────────────── //// ignore rollProgressively (Some (printfn "%s")) rollDice false 2000 ── fsharp - ignored ──────────────────────────────────────────────────────────── //// ignore rollProgressively (Some (printfn "%s")) rollDice true 2000 ── fsharp - ignored ──────────────────────────────────────────────────────────── //// ignore [[| 1 .. 10000 |]] |> Array.Parallel.map (fun _ -> rollProgressively None rollDice false 10) |> Array.Parallel.groupBy id |> Array.Parallel.map (fun (k, v) -> k, v.Length) |> Array.Parallel.sortBy fst ── fsharp - ignored ──────────────────────────────────────────────────────────── //// ignore [[| 1 .. 10000 |]] |> Array.Parallel.map (fun _ -> rollProgressively None rollDice true 10) |> Array.Parallel.groupBy id |> Array.Parallel.map (fun (k, v) -> k, v.Length) |> Array.Parallel.sortBy fst ── fsharp ────────────────────────────────────────────────────────────────────── //// test [[| 1 .. 100 |]] |> Array.Parallel.iter (fun n -> [[| 0 .. 1 |]] |> Array.Parallel.iter (fun reroll -> [[| 1 .. 3500 |]] |> Array.Parallel.map (fun _ -> rollProgressively None rollDice (reroll = 1) n) |> Array.Parallel.groupBy id |> Array.length |> __assertEqual false n ) ) ── fsharp - ignored ──────────────────────────────────────────────────────────── //// ignore let inline rollMax fn max n = [[| 1 .. n |]] |> Array.Parallel.map (fun _ -> fn max) |> Array.Parallel.groupBy id |> Array.Parallel.map (fun (_, v) -> v.Length) let rec rollN max n even current = let roll = rollMax (rollProgressively None rollDice true) max n if roll |> Array.Parallel.forall ((=) even) then current else rollN max n even (current + 1) let run () = let max = 10 let n = 30 let even = (n / max) |> int rollN max n even 0 // run () ── fsharp - ignored ──────────────────────────────────────────────────────────── //// ignore let run () = let max = 10 let n = 30 let even = (n / max) |> int [[| 1 .. 100 |]] |> Array.Parallel.map (fun i -> let roll = rollN max n even 0 printfn $"i: {i} / roll: {roll}" float roll ) |> Array.Parallel.average // run () ── markdown ──────────────────────────────────────────────────────────────────── │ ## FsCheck (test) ── fsharp ────────────────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/fscheck/3.0.1/lib/netstandard2.0/FsCheck. dll" #r @"../../../../../../../.nuget/packages/expecto.fscheck/11.0.0-alpha8/lib/net6.0/ Expecto.FsCheck3.dll" ── fsharp ────────────────────────────────────────────────────────────────────── //// test type ValorDado = | Um | Dois | Tres | Quatro | Cinco | Seis type Aspecto = | Passado of string | Presente of string | Futuro of string | Desafios of string | Recursos of string | ResultadoProjetado of string | InfluenciaExterna of string type Contexto = | Amor of string | Trabalho of string | Saude of string | Dinheiro of string type Universo = | Real of string | Virtual of string | Espiritual of string type Caracteristica = | Aspecto of Aspecto | Contexto of Contexto | Universo of Universo | DadoRolado of ValorDado type Interacao = | Conflito | Parceria | Crescimento | Estagnacao | Separacao | Harmonia | Desafio | Colaboracao | Progresso | Mudanca | Sucesso type Interpretacao = | Interpretacao of Caracteristica * Interacao * Caracteristica type SistemaDivinacao = | SistemaDivinacao of Interpretacao list * Caracteristica let config = { Expecto.FsCheckConfig.defaultConfig with maxTest = 10000 } let shuffleList xs seed = let rnd = Random (seed) xs |> List.map (fun x -> rnd.Next(), x) |> List.sortBy fst |> List.map snd type Complexity = Simple | Moderate | Complex type Duration = Short | Medium | Long type Dice = D1 of int | D2 of int type Task = | Task of Complexity * Duration * Task | NoTask let durationOfFocus (d1: int) (d2: int) = match d1 + d2 with | sum when sum <= 4 -> Short | sum when sum <= 8 -> Medium | _ -> Long let complexityOfTask (d1: int) (d2: int) = match d1 * d2 with | product when product <= 12 -> Simple | product when product <= 24 -> Moderate | _ -> Complex let rec generateTaskList d1 d2 previousTask = match d1, d2 with | d1, d2 when d1 > 0 && d2 > 0 -> let complexity = complexityOfTask d1 d2 let duration = durationOfFocus d1 d2 let newTask = Task (complexity, duration, previousTask) generateTaskList (d1 - 1) (d2 - 1) newTask | _, _ -> previousTask let properties = Expecto.Tests.testList "FsCheck samples" [[ let sistemaDivinacao (interpretacoes: Interpretacao list, caracteristica: Caracteristica) = let interpretacoes = interpretacoes |> List.sort SistemaDivinacao (interpretacoes, caracteristica) Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao is consistent" <| fun (interpretacoes: Interpretacao list, caracteristica: Caracteristica) -> sistemaDivinacao (interpretacoes, caracteristica) = sistemaDivinacao (interpretacoes, caracteristica) Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao is variant under permutation" <| fun (input: Interpretacao list, caracteristica: Caracteristica) -> let seed = 42 let shuffledInput = shuffleList input seed sistemaDivinacao (input, caracteristica) = sistemaDivinacao (shuffledInput, caracteristica) Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao can handle lists of any size" <| fun (input: Interpretacao list, caracteristica: Caracteristica) -> let sistema = sistemaDivinacao (input, caracteristica) sistema <> Unchecked.defaultof<_> Expecto.ExpectoFsCheck.testPropertyWithConfig config "SistemaDivinacao is invariant under data transformations" <| fun (input: Interpretacao list, caracteristica: Caracteristica, newInterpretation: Interpretacao) -> let containsNewInterpretation = input |> List.contains newInterpretation let modifiedInput = if containsNewInterpretation then input else newInterpretation :: input if containsNewInterpretation then sistemaDivinacao (List.sort input, caracteristica) = sistemaDivinacao (List.sort modifiedInput, caracteristica) else sistemaDivinacao (List.sort input, caracteristica) <> sistemaDivinacao (List.sort modifiedInput, caracteristica) let focusDurationProperty = FsCheck.FSharp.Prop.forAll (FsCheck.FSharp.Arb.fromGen (FsCheck.FSharp.Gen.map2 (fun d1 d2 -> (d1, d2)) (FsCheck.FSharp.Gen.choose (1, 6)) (FsCheck.FSharp.Gen.choose (1, 6)))) <| fun (d1, d2) -> let expected = match d1 + d2 with | sum when sum <= 4 -> Short | sum when sum <= 8 -> Medium | _ -> Long let actual = durationOfFocus d1 d2 expected = actual let taskComplexityProperty = FsCheck.FSharp.Prop.forAll (FsCheck.FSharp.Arb.fromGen (FsCheck.FSharp.Gen.map2 (fun d1 d2 -> (d1, d2)) (FsCheck.FSharp.Gen.choose (1, 6)) (FsCheck.FSharp.Gen.choose (1, 6)))) <| fun (d1, d2) -> let expected = match d1 * d2 with | product when product <= 12 -> Simple | product when product <= 24 -> Moderate | _ -> Complex let actual = complexityOfTask d1 d2 expected = actual let taskListLengthProperty = FsCheck.FSharp.Prop.forAll (FsCheck.FSharp.Arb.fromGen (FsCheck.FSharp.Gen.map2 (fun d1 d2 -> (d1, d2)) (FsCheck.FSharp.Gen.choose (1, 6)) (FsCheck.FSharp.Gen.choose (1, 6)))) <| fun (d1, d2) -> let taskList = generateTaskList d1 d2 NoTask let rec taskListLength taskList = match taskList with | Task (_, _, nextTask) -> 1 + taskListLength nextTask | NoTask -> 0 let actual = taskListLength taskList let expected = min d1 d2 expected = actual Expecto.ExpectoFsCheck.testProperty "Duration of focus should be calculated correctly" focusDurationProperty Expecto.ExpectoFsCheck.testProperty "Task complexity should be calculated correctly" taskComplexityProperty Expecto.ExpectoFsCheck.testProperty "Task list should have the correct length" taskListLengthProperty ]] let dice1 = 6 let dice2 = 6 let taskList = generateTaskList dice1 dice2 NoTask let rec printTaskList taskList = match taskList with | Task (complexity, duration, nextTask) -> printfn "Complexidade: %A, Duração: %A" complexity duration printTaskList nextTask | NoTask -> () printTaskList taskList Expecto.Tests.runTestsWithCLIArgs [[]] [[||]] properties |> _assertEqual 0 ── [ 626.37ms - stderr ] ─────────────────────────────────────────────────────── │ Complexidade: Simple, Duração: Short │ Complexidade: Simple, Duração: Short │ Complexidade: Simple, Duração: Medium │ Complexidade: Moderate, Duração: Medium │ Complexidade: Complex, Duração: Long │ Complexidade: Complex, Duração: Long │ NotebookRunner.RunNotebookAsync / exiting... 3 ── markdown ──────────────────────────────────────────────────────────────────── │ ## main ── fsharp ────────────────────────────────────────────────────────────────────── let main args = let result = rollProgressively (Some (printfn "%s")) rollDice true (System.Int32.MaxValue / 10) trace Debug (fun () -> $"main / result: {result}") _locals 0 NotebookRunner.RunNotebookAsync / exiting... 2 NotebookRunner.RunNotebookAsync / exiting... 1 NotebookRunner.RunNotebookAsync / event: CommandFailed: System.IO.FileNotFoundException: Could not load file or assembly 'Mono.Cecil, Version=0.11.4.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e'. The system cannot find the file specified. File name: 'Mono.Cecil, Version=0.11.4.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e' at <StartupCode$Expecto>.$Expecto.Impl..cctor() at Expecto.Impl.get_defaultPrinter@257.Invoke(Test _tests) in C:\workspaces\dotnet\expecto\Expecto\Expecto.Impl.fs:line 258 at Expecto.Impl.runEvalWithCancel@743.Invoke(Unit unitVar) in C:\workspaces\dotnet\expecto\Expecto\Expecto.Impl.fs:line 743 at Microsoft.FSharp.Control.AsyncPrimitives.CallThenInvoke[T,TResult](AsyncActivati on`1 ctxt, TResult result1, FSharpFunc`2 part2) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 510 at Microsoft.FSharp.Control.Trampoline.Execute(FSharpFunc`2 firstAction) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 112 --- End of stack trace from previous location --- at Microsoft.FSharp.Control.AsyncResult`1.Commit() in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 454 at Microsoft.FSharp.Control.AsyncPrimitives.QueueAsyncAndWaitForResultSynchronously [a](CancellationToken token, FSharpAsync`1 computation, FSharpOption`1 timeout) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1139 at Microsoft.FSharp.Control.AsyncPrimitives.RunSynchronously[T](CancellationToken cancellationToken, FSharpAsync`1 computation, FSharpOption`1 timeout) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1166 at Microsoft.FSharp.Control.FSharpAsync.RunSynchronously[T](FSharpAsync`1 computation, FSharpOption`1 timeout, FSharpOption`1 cancellationToken) in D:\a\_work\1\s\src\FSharp.Core\async.fs:line 1515 at Expecto.Tests.runTestsWithCancel@617(CancellationToken ct, ExpectoConfig config, Test tests) in C:\workspaces\dotnet\expecto\Expecto\Expecto.fs:line 635 at Expecto.Tests.runTestsWithCLIArgsAndCancel(CancellationToken ct, IEnumerable`1 cliArgs, String[] args, Test tests) in C:\workspaces\dotnet\expecto\Expecto\Expecto.fs:line 660 at Expecto.Tests.runTestsWithCLIArgs(IEnumerable`1 cliArgs, String[] args, Test tests) in C:\workspaces\dotnet\expecto\Expecto\Expecto.fs:line 668 at <StartupCode$FSI_0052>.$FSI_0052.main@() at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor) at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr) note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace # Invoke-Block / $retry: 3/3 / $Location: ../../deps/polyglot/lib/fsharp / Get-Location: C:\home\git\dice\deps\polyglot\lib\fsharp / $OnError: Stop / $exitcode: -1073740791 / $Error: '' / $ScriptBlock: '. ../../deps/spiral/workspace/target/release/spiral$(_exe) dib --path "$ScriptDir/$projectName.dib"' # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\dice\scripts / $OnError: Stop / $exitcode: 1073740791 / $Error: '' / $ScriptBlock: 'pwsh ../lib/fsharp/build.ps1' # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\i574n.github\scripts / $OnError: Continue / $exitcode: 1073740791 / $Error: '' / $ScriptBlock: 'pwsh ../../dice/scripts/build.ps1'
In [ ]:
{ pwsh outdated.ps1 } | Invoke-Block
CheckToml / toml: C:\home\git\spiral\workspace\Cargo.toml error: failed to download `hybrid-array v0.3.0` Caused by: unable to get packages from source Caused by: failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml` Caused by: feature `edition2024` is required The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0). Consider trying a more recent nightly release. See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature. # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\spiral\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'cargo outdated -m $toml @_args' CheckToml / toml: C:\home\git\spiral\apps\spiral\Cargo.toml error: failed to download `hybrid-array v0.3.0` Caused by: unable to get packages from source Caused by: failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml` Caused by: feature `edition2024` is required The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0). Consider trying a more recent nightly release. See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature. # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\spiral\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'cargo outdated -m $toml @_args' Paket version 9.0.2+d62083715d89e1fe48337ae2246558ea67c58342 Resolving dependency graph... Outdated packages found: Group: Main * Argu 6.2.4 -> 6.2.5 * Expecto.FsCheck 11.0.0-alpha8 -> 11.0.0-alpha8-fscheck2 * Fable.Core 4.3 -> 4.5.0 * FsCheck 3.0.1 -> 2.16.6 * Microsoft.AspNetCore.App.Ref 9.0.3 -> 10.0.0-preview.2.25164.1 * Microsoft.AspNetCore.Connections.Abstractions 7.0 -> 10.0.0-preview.2.25164.1 * Microsoft.AspNetCore.Http.Connections.Client 7.0 -> 10.0.0-preview.2.25164.1 * Microsoft.AspNetCore.Http.Connections.Common 7.0 -> 10.0.0-preview.2.25164.1 * Microsoft.AspNetCore.SignalR.Client 7.0 -> 10.0.0-preview.2.25164.1 * Microsoft.AspNetCore.SignalR.Client.Core 7.0 -> 10.0.0-preview.2.25164.1 * Microsoft.AspNetCore.SignalR.Common 7.0 -> 10.0.0-preview.2.25164.1 * Microsoft.AspNetCore.SignalR.Protocols.Json 7.0 -> 10.0.0-preview.2.25164.1 * Microsoft.Bcl.AsyncInterfaces 9.0.3 -> 10.0.0-preview.2.25163.2 * Microsoft.Extensions.DependencyInjection 9.0.3 -> 10.0.0-preview.2.25163.2 * Microsoft.Extensions.DependencyInjection.Abstractions 9.0.3 -> 10.0.0-preview.2.25163.2 * Microsoft.Extensions.Features 7.0 -> 10.0.0-preview.2.25164.1 * Microsoft.Extensions.Logging 9.0.3 -> 10.0.0-preview.2.25163.2 * Microsoft.Extensions.Logging.Abstractions 9.0.3 -> 10.0.0-preview.2.25163.2 * Microsoft.Extensions.Options 9.0.3 -> 10.0.0-preview.2.25163.2 * Microsoft.Extensions.Primitives 9.0.3 -> 10.0.0-preview.2.25163.2 * System.CodeDom 9.0.3 -> 10.0.0-preview.2.25163.2 * System.IO.Pipelines 9.0.3 -> 10.0.0-preview.2.25163.2 * System.Management 7.0 -> 10.0.0-preview.2.25163.2 * System.Threading.Channels 9.0.3 -> 10.0.0-preview.2.25163.2 * System.Threading.Tasks.Extensions 4.6.1 -> 4.6.2 Total time taken: 45 seconds CheckToml / toml: C:\home\git\polyglot\workspace\Cargo.toml chat_contract_tests ================ Name Project Compat Latest Kind Platform ---- ------- ------ ------ ---- -------- ahash 0.7.8 Removed --- Normal --- android-tzdata 0.1.1 Removed --- Normal cfg(target_os = "android") android_system_properties 0.1.5 Removed --- Normal cfg(target_os = "android") autocfg 1.4.0 Removed --- Build --- bumpalo 3.16.0 Removed --- Normal --- cc 1.2.4 Removed --- Build --- cfg-if 1.0.0 Removed --- Normal --- chrono 0.4.39 Removed --- Normal --- core-foundation-sys 0.8.7 Removed --- Normal cfg(any(target_os = "macos", target_os = "ios")) equivalent 1.0.1 --- Removed Normal --- getrandom 0.2.15 Removed --- Normal cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi")) hashbrown 0.12.3 0.15.2 --- Normal --- hashbrown 0.15.2 --- 0.12.3 Normal --- iana-time-zone 0.1.61 Removed --- Normal cfg(unix) iana-time-zone-haiku 0.1.2 Removed --- Normal cfg(target_os = "haiku") indexmap 1.9.3 2.7.0 --- Normal --- indexmap 2.7.0 --- 1.9.3 Normal --- jobserver 0.1.32 Removed --- Normal --- js-sys 0.3.76 Removed --- Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown")) js-sys 0.3.76 Removed --- Normal cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi")))) js-sys 0.3.76 Removed --- Normal cfg(all(target_arch = "wasm32", target_os = "unknown")) libc 0.2.168 Removed --- Normal --- libc 0.2.168 Removed --- Normal cfg(unix) libm 0.2.11 Removed --- Normal --- log 0.4.22 Removed --- Normal --- near-sandbox-utils 0.8.0 0.9.0 --- Build --- near-sandbox-utils 0.9.0 --- 0.8.0 Normal --- num-traits 0.2.19 Removed --- Normal --- once_cell 1.20.2 Removed --- Normal --- once_cell 1.20.2 Removed --- Normal cfg(not(all(target_arch = "arm", target_os = "none"))) proc-macro2 1.0.92 Removed --- Normal --- quote 1.0.37 Removed --- Normal --- serde 1.0.216 Removed --- Normal --- serde_derive 1.0.216 Removed --- Normal --- shlex 1.3.0 Removed --- Normal --- syn 2.0.90 Removed --- Normal --- unicode-ident 1.0.14 Removed --- Normal --- version_check 0.9.5 Removed --- Build --- wasi 0.11.0+wasi-snapshot-preview1 Removed --- Normal cfg(target_os = "wasi") wasm-bindgen 0.2.99 Removed --- Normal --- wasm-bindgen 0.2.99 Removed --- Normal cfg(all(any(target_arch = "wasm32", target_arch = "wasm64"), target_os = "unknown")) wasm-bindgen 0.2.99 Removed --- Normal cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi")))) wasm-bindgen 0.2.99 Removed --- Normal cfg(all(target_arch = "wasm32", target_os = "unknown")) wasm-bindgen-backend 0.2.99 Removed --- Normal --- wasm-bindgen-macro 0.2.99 Removed --- Normal --- wasm-bindgen-macro-support 0.2.99 Removed --- Normal --- wasm-bindgen-shared 0.2.99 Removed --- Normal --- windows-core 0.52.0 Removed --- Normal cfg(target_os = "windows") windows-targets 0.52.6 Removed --- Normal --- windows-targets 0.52.6 Removed --- Normal cfg(windows) windows_aarch64_gnullvm 0.52.6 Removed --- Normal aarch64-pc-windows-gnullvm windows_aarch64_msvc 0.52.6 Removed --- Normal cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib))) windows_i686_gnu 0.52.6 Removed --- Normal cfg(all(target_arch = "x86", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib))) windows_i686_gnullvm 0.52.6 Removed --- Normal i686-pc-windows-gnullvm windows_i686_msvc 0.52.6 Removed --- Normal cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib))) windows_x86_64_gnu 0.52.6 Removed --- Normal cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib))) windows_x86_64_gnullvm 0.52.6 Removed --- Normal x86_64-pc-windows-gnullvm windows_x86_64_msvc 0.52.6 Removed --- Normal cfg(all(any(target_arch = "x86_64", target_arch = "arm64ec"), target_env = "msvc", not(windows_raw_dylib))) CheckToml / toml: C:\home\git\polyglot\apps\chat\contract\Cargo.toml error: failed to download `hybrid-array v0.3.0` Caused by: unable to get packages from source Caused by: failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml` Caused by: feature `edition2024` is required The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0). Consider trying a more recent nightly release. See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature. # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\polyglot\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'cargo outdated -m $toml @_args' CheckToml / toml: C:\home\git\polyglot\apps\chat\contract\tests\Cargo.toml error: failed to download `hybrid-array v0.3.0` Caused by: unable to get packages from source Caused by: failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml` Caused by: feature `edition2024` is required The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0). Consider trying a more recent nightly release. See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature. # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\polyglot\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'cargo outdated -m $toml @_args' CheckToml / toml: C:\home\git\polyglot\apps\plot\Cargo.toml error: failed to download `hybrid-array v0.3.0` Caused by: unable to get packages from source Caused by: failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml` Caused by: feature `edition2024` is required The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0). Consider trying a more recent nightly release. See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature. # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\polyglot\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'cargo outdated -m $toml @_args' CheckJson / json: C:/home/git/polyglot $ npm-check-updates --target greatest Using bun Checking C:\home\git\polyglot\package.json @types/node ~22.10 → ~22.13 npm-check-updates ~17.1.14 → ~17.1.16 Run ncu --target greatest -u to upgrade package.json CheckJson / json: C:/home/git/polyglot/apps/ipfs $ npm-check-updates --target greatest Using bun Checking C:\home\git\polyglot\apps\ipfs\package.json @types/node ~22.10 → ~22.13 npm-check-updates ~17.1.14 → ~17.1.16 Run ncu --target greatest -u to upgrade package.json CheckJson / json: C:/home/git/polyglot/apps/spiral/temp/extension $ npm-check-updates --target greatest Using bun Checking C:\home\git\polyglot\apps\spiral\temp\extension\package.json @playwright/test 1.44.0 → 1.52.0-alpha-2025-03-29 @types/chrome ~0.0.268 → ~0.0.313 npm-check-updates ~17.1.14 → ~17.1.16 Run ncu --target greatest -u to upgrade package.json CheckJson / json: C:/home/git/polyglot/apps/spiral/vscode $ npm-check-updates --target greatest Using bun Checking C:\home\git\polyglot\apps\spiral\vscode\package.json @types/node ~22.10 → ~22.13 @types/vscode ~1.96 → ~1.98 npm-check-updates ~17.1.14 → ~17.1.16 Run ncu --target greatest -u to upgrade package.json CheckJson / json: C:/home/git/polyglot/deps/The-Spiral-Language/VS Code Plugin $ npm-check-updates --target greatest Checking C:\home\git\polyglot\deps\The-Spiral-Language\VS Code Plugin\package.json @microsoft/signalr 8.0.0 → 8.0.7 @types/node ~22.10 → ~22.13 @types/vscode ~1.95 → ~1.98 @vscode/vsce ~3.2 → ~3.3 esbuild ~0.24 → ~0.25 npm-check-updates ~17.1.14 → ~17.1.16 portfinder ^1.0.32 → ^1.0.35 Run ncu --target greatest -u to upgrade package.json CheckToml / toml: C:\home\git\dice\Cargo.toml / _args: -w dice_contract ================ Name Project Compat Latest Kind Platform ---- ------- ------ ------ ---- -------- allocator-api2 0.2.20 Removed Removed Normal --- equivalent 1.0.1 Removed Removed Normal --- foldhash 0.1.3 Removed Removed Normal --- dice_contract_lib ================ Name Project Compat Latest Kind Platform ---- ------- ------ ------ ---- -------- allocator-api2 0.2.20 Removed Removed Normal --- equivalent 1.0.1 Removed Removed Normal --- foldhash 0.1.3 Removed Removed Normal --- fable_library_rust ================ Name Project Compat Latest Kind Platform ---- ------- ------ ------ ---- -------- ahash 0.7.8 Removed Removed Normal --- aho-corasick 1.1.3 Removed Removed Normal --- allocator-api2 0.2.20 Removed Removed Normal --- arrayvec 0.7.6 Removed Removed Normal --- autocfg 1.4.0 Removed Removed Build --- bitvec 1.0.1 Removed Removed Normal --- borsh 1.5.3 Removed Removed Normal --- borsh-derive 1.5.3 Removed Removed Normal --- bytecheck 0.6.12 Removed Removed Normal --- bytecheck_derive 0.6.12 Removed Removed Normal --- byteorder 1.5.0 Removed Removed Normal --- bytes 1.10.1 Removed Removed Normal --- cfg-if 1.0.0 Removed Removed Normal --- cfg_aliases 0.2.1 Removed Removed Build --- equivalent 1.0.1 Removed Removed Normal --- foldhash 0.1.3 Removed Removed Normal --- funty 2.0.0 Removed Removed Normal --- getrandom 0.2.15 Removed Removed Normal --- getrandom 0.2.15 Removed Removed Normal cfg(any(target_os = "linux", target_os = "android", target_os = "windows", target_os = "macos", target_os = "ios", target_os = "freebsd", target_os = "openbsd", target_os = "netbsd", target_os = "dragonfly", target_os = "solaris", target_os = "illumos", target_os = "fuchsia", target_os = "redox", target_os = "cloudabi", target_os = "haiku", target_os = "vxworks", target_os = "emscripten", target_os = "wasi")) hashbrown 0.12.3 Removed Removed Normal --- hashbrown 0.15.1 Removed Removed Normal --- indexmap 2.6.0 Removed Removed Normal --- itoa 1.0.11 Removed Removed Normal --- libc 0.2.162 Removed Removed Normal cfg(unix) memchr 2.7.4 Removed Removed Normal --- num-bigint 0.4.6 Removed Removed Normal --- num-integer 0.1.46 Removed Removed Normal --- num-traits 0.2.19 Removed Removed Normal --- once_cell 1.20.2 Removed Removed Normal --- once_cell 1.20.2 Removed Removed Normal cfg(not(all(target_arch = "arm", target_os = "none"))) ppv-lite86 0.2.20 Removed Removed Normal --- proc-macro-crate 3.2.0 Removed Removed Normal --- proc-macro2 1.0.89 Removed Removed Normal --- ptr_meta 0.1.4 Removed Removed Normal --- ptr_meta_derive 0.1.4 Removed Removed Normal --- quote 1.0.37 Removed Removed Normal --- radium 0.7.0 Removed Removed Normal --- rand 0.8.5 Removed Removed Normal --- rand_chacha 0.3.1 Removed Removed Normal --- rand_core 0.6.4 Removed Removed Normal --- regex 1.11.1 Removed Removed Normal --- regex-automata 0.4.9 Removed Removed Normal --- regex-syntax 0.8.5 Removed Removed Normal --- rend 0.4.2 Removed Removed Normal --- rkyv 0.7.45 Removed Removed Normal --- rkyv_derive 0.7.45 Removed Removed Normal --- rust_decimal 1.36.0 Removed Removed Normal --- ryu 1.0.18 Removed Removed Normal --- seahash 4.1.0 Removed Removed Normal --- serde 1.0.215 Removed Removed Normal --- serde_derive 1.0.215 Removed Removed Normal --- serde_json 1.0.132 Removed Removed Normal --- serde_spanned 0.6.8 Removed Removed Normal --- simdutf8 0.1.5 Removed Removed Normal --- syn 1.0.109 Removed Removed Normal --- syn 2.0.87 Removed Removed Normal --- tap 1.0.1 Removed Removed Normal --- tinyvec 1.8.0 Removed Removed Normal --- tinyvec_macros 0.1.1 Removed Removed Normal --- toml_datetime 0.6.8 Removed Removed Normal --- toml_edit 0.22.22 Removed Removed Normal --- unicode-ident 1.0.13 Removed Removed Normal --- uuid 1.11.0 Removed Removed Normal --- version_check 0.9.5 Removed Removed Build --- wasi 0.11.0+wasi-snapshot-preview1 Removed Removed Normal cfg(target_os = "wasi") winnow 0.6.20 Removed Removed Normal --- wyz 0.5.1 Removed Removed Normal --- zerocopy 0.7.35 Removed Removed Normal --- zerocopy-derive 0.7.35 Removed Removed Normal --- dice_contract_tests ================ Name Project Compat Latest Kind Platform ---- ------- ------ ------ ---- -------- allocator-api2 0.2.20 Removed Removed Normal --- android-tzdata 0.1.1 --- Removed Normal cfg(target_os = "android") android_system_properties 0.1.5 --- Removed Normal cfg(target_os = "android") autocfg 1.4.0 --- Removed Build --- bumpalo 3.16.0 --- Removed Normal --- cc 1.2.1 --- Removed Build --- cfg-if 1.0.0 --- Removed Normal --- chrono 0.4.38 --- Removed Normal --- core-foundation-sys 0.8.7 --- Removed Normal cfg(any(target_os = "macos", target_os = "ios")) equivalent 1.0.1 Removed Removed Normal --- foldhash 0.1.3 Removed Removed Normal --- hashbrown 0.15.1 0.12.3 0.12.3 Normal --- iana-time-zone 0.1.61 --- Removed Normal cfg(unix) iana-time-zone-haiku 0.1.2 --- Removed Normal cfg(target_os = "haiku") indexmap 2.6.0 1.9.3 1.9.3 Normal --- jobserver 0.1.32 --- Removed Normal --- js-sys 0.3.77 --- Removed Normal cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi")))) js-sys 0.3.77 --- Removed Normal cfg(all(target_arch = "wasm32", target_os = "unknown")) libc 0.2.162 --- Removed Normal --- libc 0.2.162 --- Removed Normal cfg(unix) log 0.4.22 --- Removed Normal --- near-sandbox-utils 0.8.0 --- 0.9.0 Build --- near-sandbox-utils 0.9.0 0.8.0 --- Normal --- num-traits 0.2.19 --- Removed Normal --- once_cell 1.20.2 --- Removed Normal --- proc-macro2 1.0.89 --- Removed Normal --- quote 1.0.37 --- Removed Normal --- rustversion 1.0.18 --- Removed Normal --- serde 1.0.215 --- Removed Normal --- serde_derive 1.0.215 --- Removed Normal --- shlex 1.3.0 --- Removed Normal --- syn 2.0.87 --- Removed Normal --- unicode-ident 1.0.13 --- Removed Normal --- wasm-bindgen 0.2.100 --- Removed Normal --- wasm-bindgen 0.2.100 --- Removed Normal cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi")))) wasm-bindgen 0.2.100 --- Removed Normal cfg(all(target_arch = "wasm32", target_os = "unknown")) wasm-bindgen-backend 0.2.100 --- Removed Normal --- wasm-bindgen-macro 0.2.100 --- Removed Normal --- wasm-bindgen-macro-support 0.2.100 --- Removed Normal --- wasm-bindgen-shared 0.2.100 --- Removed Normal --- windows-core 0.52.0 --- Removed Normal cfg(target_os = "windows") windows-targets 0.52.6 --- Removed Normal --- windows-targets 0.52.6 --- Removed Normal cfg(windows) windows_aarch64_gnullvm 0.52.6 --- Removed Normal aarch64-pc-windows-gnullvm windows_aarch64_msvc 0.52.6 --- Removed Normal cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib))) windows_i686_gnu 0.52.6 --- Removed Normal cfg(all(target_arch = "x86", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib))) windows_i686_gnullvm 0.52.6 --- Removed Normal i686-pc-windows-gnullvm windows_i686_msvc 0.52.6 --- Removed Normal cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib))) windows_x86_64_gnu 0.52.6 --- Removed Normal cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib))) windows_x86_64_gnullvm 0.52.6 --- Removed Normal x86_64-pc-windows-gnullvm windows_x86_64_msvc 0.52.6 --- Removed Normal cfg(all(any(target_arch = "x86_64", target_arch = "arm64ec"), target_env = "msvc", not(windows_raw_dylib))) dice_ui ================ Name Project Compat Latest Kind Platform ---- ------- ------ ------ ---- -------- allocator-api2 0.2.20 Removed Removed Normal --- equivalent 1.0.1 Removed Removed Normal --- foldhash 0.1.3 Removed Removed Normal --- CheckToml / toml: C:\home\git\dice\lib\Cargo.toml / _args: error: failed to download `hybrid-array v0.3.0` Caused by: unable to get packages from source Caused by: failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml` Caused by: feature `edition2024` is required The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0). Consider trying a more recent nightly release. See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature. # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\dice\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'cargo outdated -m $toml @_args' CheckToml / toml: C:\home\git\dice\lib\contract\Cargo.toml / _args: error: failed to download `hybrid-array v0.3.0` Caused by: unable to get packages from source Caused by: failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml` Caused by: feature `edition2024` is required The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0). Consider trying a more recent nightly release. See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature. # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\dice\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'cargo outdated -m $toml @_args' CheckToml / toml: C:\home\git\dice\lib\fsharp\Cargo.toml / _args: error: failed to download `hybrid-array v0.3.0` Caused by: unable to get packages from source Caused by: failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml` Caused by: feature `edition2024` is required The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0). Consider trying a more recent nightly release. See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature. # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\dice\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'cargo outdated -m $toml @_args' CheckToml / toml: C:\home\git\dice\contract\Cargo.toml / _args: error: failed to download `hybrid-array v0.3.0` Caused by: unable to get packages from source Caused by: failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml` Caused by: feature `edition2024` is required The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0). Consider trying a more recent nightly release. See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature. # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\dice\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'cargo outdated -m $toml @_args' CheckToml / toml: C:\home\git\dice\contract\tests\Cargo.toml / _args: error: failed to download `hybrid-array v0.3.0` Caused by: unable to get packages from source Caused by: failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml` Caused by: feature `edition2024` is required The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0). Consider trying a more recent nightly release. See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature. # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\dice\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'cargo outdated -m $toml @_args' CheckToml / toml: C:\home\git\dice\ui\Cargo.toml / _args: error: failed to download `hybrid-array v0.3.0` Caused by: unable to get packages from source Caused by: failed to parse manifest at `C:\Users\i574n\scoop\persist\rustup\.cargo\registry\src\index.crates.io-6f17d22bba15001f\hybrid-array-0.3.0\Cargo.toml` Caused by: feature `edition2024` is required The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0). Consider trying a more recent nightly release. See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature. # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: C:\home\git\dice\scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'cargo outdated -m $toml @_args' CheckJson / json: C:/home/git/dice/ui $ npm-check-updates --target greatest Using bun Checking C:\home\git\dice\ui\package.json @types/node ~22.10 → ~22.13 npm-check-updates ~17.1.14 → ~17.1.16 tailwindcss ~3.4 → ~4.0 Run ncu --target greatest -u to upgrade package.json CheckJson / json: C:/home/git/dice/ui/e2e $ npm-check-updates --target greatest Using bun Checking C:\home\git\dice\ui\e2e\package.json @playwright/test 1.44.0 → 1.52.0-alpha-2025-03-29 npm-check-updates ~17.1.14 → ~17.1.16 Run ncu --target greatest -u to upgrade package.json
In [ ]:
{ pwsh publish.ps1 } | Invoke-Block
building file list ... done created directory ../dist ./ .editorconfig .gitattributes .gitignore CODE_OF_CONDUCT.md CONTRIBUTING.md README.md i574n-deps.code-workspace i574n.code-workspace init.ps1 outdated.ps1 publish.ps1 workflow.dib workflow.dib.html workflow.dib.ipynb workflow.ps1 .devcontainer/ .devcontainer/Dockerfile .devcontainer/devcontainer.json .github/ .github/FUNDING.yml .github/workflows/ .github/workflows/gh-pages.yml profile/ profile/README.md scripts/ scripts/build.ps1 scripts/init.ps1 scripts/outdated.ps1 scripts/publish.ps1 scripts/workflow.dib scripts/workflow.dib.html scripts/workflow.dib.ipynb scripts/workflow.ps1 sent 29,817,569 bytes received 596 bytes 59,636,330.00 bytes/sec total size is 29,811,586 speedup is 1.00 building file list ... done created directory ../dist ./ skipping non-regular file ".obsidian/plugins/obsidian-custom-frames/main.js" .editorconfig .gitattributes .gitignore .markdownlint.json LICENSE README.md fleek.config.json init.ps1 publish-fleek.ps1 publish.ps1 workflow.ps1 .babashka/ .babashka/bb.edn .babashka/nbb.edn .devcontainer/ .devcontainer/Dockerfile .devcontainer/devcontainer.json .github/ .github/workflows/ .github/workflows/gh-pages.yml .obsidian/ .obsidian/app.json .obsidian/appearance.json .obsidian/bookmarks.json .obsidian/community-plugins.json .obsidian/core-plugins.json .obsidian/daily-notes.json .obsidian/graph.json .obsidian/hotkeys.json .obsidian/workspace-mobile.json .obsidian/workspace.json .obsidian/plugins/ .obsidian/plugins/babashka/ .obsidian/plugins/babashka/data.json .obsidian/plugins/babashka/main.js .obsidian/plugins/babashka/manifest.json .obsidian/plugins/better-word-count/ .obsidian/plugins/better-word-count/main.js .obsidian/plugins/better-word-count/manifest.json .obsidian/plugins/better-word-count/styles.css .obsidian/plugins/calendar/ .obsidian/plugins/calendar/data.json .obsidian/plugins/calendar/main.js .obsidian/plugins/calendar/manifest.json .obsidian/plugins/convert-url-to-iframe/ .obsidian/plugins/convert-url-to-iframe/main.js .obsidian/plugins/convert-url-to-iframe/manifest.json .obsidian/plugins/convert-url-to-iframe/styles.css .obsidian/plugins/dataview/ .obsidian/plugins/dataview/main.js .obsidian/plugins/dataview/manifest.json .obsidian/plugins/dataview/styles.css .obsidian/plugins/file-indicators/ .obsidian/plugins/file-indicators/data.json .obsidian/plugins/file-indicators/main.js .obsidian/plugins/file-indicators/manifest.json .obsidian/plugins/file-indicators/styles.css .obsidian/plugins/key-promoter/ .obsidian/plugins/key-promoter/data.json .obsidian/plugins/key-promoter/main.js .obsidian/plugins/key-promoter/manifest.json .obsidian/plugins/novel-word-count/ .obsidian/plugins/novel-word-count/data.json .obsidian/plugins/novel-word-count/main.js .obsidian/plugins/novel-word-count/manifest.json .obsidian/plugins/novel-word-count/styles.css .obsidian/plugins/obsidian-checklist-plugin/ .obsidian/plugins/obsidian-checklist-plugin/main.js .obsidian/plugins/obsidian-checklist-plugin/manifest.json .obsidian/plugins/obsidian-checklist-plugin/styles.css .obsidian/plugins/obsidian-custom-file-extensions-plugin/ .obsidian/plugins/obsidian-custom-file-extensions-plugin/data.json .obsidian/plugins/obsidian-custom-file-extensions-plugin/main.js .obsidian/plugins/obsidian-custom-file-extensions-plugin/manifest.json .obsidian/plugins/obsidian-custom-frames/ .obsidian/plugins/obsidian-custom-frames/_main.js .obsidian/plugins/obsidian-custom-frames/data.json .obsidian/plugins/obsidian-custom-frames/manifest.json .obsidian/plugins/obsidian-custom-frames/styles.css .obsidian/plugins/obsidian-day-planner/ .obsidian/plugins/obsidian-day-planner/data.json .obsidian/plugins/obsidian-day-planner/main.js .obsidian/plugins/obsidian-day-planner/manifest.json .obsidian/plugins/obsidian-day-planner/styles.css .obsidian/plugins/obsidian-git/ .obsidian/plugins/obsidian-git/data.json .obsidian/plugins/obsidian-git/main.js .obsidian/plugins/obsidian-git/manifest.json .obsidian/plugins/obsidian-git/styles.css .obsidian/plugins/obsidian-html-plugin/ .obsidian/plugins/obsidian-html-plugin/main.js .obsidian/plugins/obsidian-html-plugin/manifest.json .obsidian/plugins/obsidian-kanban/ .obsidian/plugins/obsidian-kanban/main.js .obsidian/plugins/obsidian-kanban/manifest.json .obsidian/plugins/obsidian-kanban/styles.css .obsidian/plugins/obsidian-linter/ .obsidian/plugins/obsidian-linter/data.json .obsidian/plugins/obsidian-linter/main.js .obsidian/plugins/obsidian-linter/manifest.json .obsidian/plugins/obsidian-linter/styles.css .obsidian/plugins/obsidian-mind-map/ .obsidian/plugins/obsidian-mind-map/main.js .obsidian/plugins/obsidian-mind-map/manifest.json .obsidian/plugins/obsidian-plugin-toc/ .obsidian/plugins/obsidian-plugin-toc/data.json .obsidian/plugins/obsidian-plugin-toc/main.js .obsidian/plugins/obsidian-plugin-toc/manifest.json .obsidian/plugins/obsidian-prominent-starred-files/ .obsidian/plugins/obsidian-prominent-starred-files/main.js .obsidian/plugins/obsidian-prominent-starred-files/manifest.json .obsidian/plugins/obsidian-prominent-starred-files/styles.css .obsidian/plugins/obsidian-tasks-plugin/ .obsidian/plugins/obsidian-tasks-plugin/data.json .obsidian/plugins/obsidian-tasks-plugin/main.js .obsidian/plugins/obsidian-tasks-plugin/manifest.json .obsidian/plugins/obsidian-tasks-plugin/styles.css .obsidian/plugins/obsidian-version-history-diff/ .obsidian/plugins/obsidian-version-history-diff/main.js .obsidian/plugins/obsidian-version-history-diff/manifest.json .obsidian/plugins/obsidian-version-history-diff/styles.css .obsidian/plugins/oz-image-plugin/ .obsidian/plugins/oz-image-plugin/data.json .obsidian/plugins/oz-image-plugin/main.js .obsidian/plugins/oz-image-plugin/manifest.json .obsidian/plugins/oz-image-plugin/styles.css .obsidian/plugins/recent-files-obsidian/ .obsidian/plugins/recent-files-obsidian/data.json .obsidian/plugins/recent-files-obsidian/main.js .obsidian/plugins/recent-files-obsidian/manifest.json .obsidian/plugins/recent-files-obsidian/styles.css .obsidian/plugins/remember-cursor-position/ .obsidian/plugins/remember-cursor-position/cursor-positions.json .obsidian/plugins/remember-cursor-position/main.js .obsidian/plugins/remember-cursor-position/manifest.json .obsidian/plugins/reveal-active-file-button/ .obsidian/plugins/reveal-active-file-button/main.js .obsidian/plugins/reveal-active-file-button/manifest.json .obsidian/plugins/terminal/ .obsidian/plugins/terminal/data.json .obsidian/plugins/terminal/main.js .obsidian/plugins/terminal/manifest.json .obsidian/plugins/terminal/styles.css data/ data/ai/ data/ai/ai.md data/ai/ai.mp3.md data/ai/ai.pdf.md data/ai/chatgpt.html.md data/ai/chatgpt.md data/ai/chatgpt.toml data/ai/gpt3.html.md data/ai/rhyme 6.md data/apple/ data/apple/apple.html.md data/apple/apple.i574n.md data/art/ data/art/art.md data/astrology/ data/astrology/astrology.fc1943s.md data/astrology/astrology.html.md data/astrology/astrology.md data/astronomy/ data/astronomy/astronomy.md data/biology/ data/biology/biology.mp3.md data/books/ data/books/books.md data/business/ data/business/business.md data/chat/ data/chat/AdySweet.html.md data/chat/Angrykat.html.md data/chat/AubriToffee.html.md data/chat/AwesomeEly.html.md data/chat/BirthdayLexxx.html.md data/chat/Blond3B.html.md data/chat/Brithanybrown.html.md data/chat/Cherrycute666.html.md data/chat/Dakota_Blare.html.md data/chat/EffyTudor.html.md data/chat/Fairy_Sweet.html.md data/chat/GirlOffGrid.html.md data/chat/HinakoHime.html.md data/chat/ImperialKiss.html.md data/chat/JALYN.html.md data/chat/Jully_Lov.html.md data/chat/Kitty.html.md data/chat/Luckyystrike.html.md data/chat/MissLullu.html.md data/chat/Missbaby8.html.md data/chat/NicolePowell.html.md data/chat/Olivia.html.md data/chat/Red_Flower203.html.md data/chat/RocknRose.html.md data/chat/RorrieGomez.html.md data/chat/Stacy_x3.html.md data/chat/Stephanie.html.md data/chat/TinaHale.html.md data/chat/WhitneyR.html.md data/chat/Yarrow.html.md data/chat/Yukenzi.html.md data/chat/aliceisonfire.html.md data/chat/chloewildd.html.md data/chat/diney_.html.md data/chat/kittennmoon.html.md data/chat/mfc.html.md data/chores/ data/chores/chores.md data/cliparts/ data/cliparts/avatars.i574n.png.md data/cliparts/cliparts.html.md data/clojure/ data/clojure/clojure.md data/community/ data/community/community.md data/community/netiquette_pt-br.md data/compilers/ data/compilers/compilers.md data/compilers/compilers.pdf.md data/cryptography/ data/cryptography/cryptography.md data/dance/ data/dance/dance.md data/dialects/ data/dialects/dialects.md data/dialects/dialects.pdf.md data/dialects/english.md data/dialects/korean.html.md data/dialects/korean.md data/dialects/korean.mp3.md data/dialects/korean.mp4.md data/dialects/korean.pdf.md data/dialects/korean.png.md data/dialects/portuguese.md data/dialects/spanish.md data/dotnet/ data/dotnet/dotnet.md data/doujinshi/ data/doujinshi/doujinshi.md data/drugs/ data/drugs/drugs.html.md data/drugs/drugs.md data/drugs/drugs.mp3.md data/drugs/drugs.pdf.md data/drugs/selva-verde_pt-br.md data/economy/ data/economy/만리마속도_pt-br.md data/engineering/ data/engineering/engineering.mp3.md data/ethics/ data/ethics/ethics.mp3.md data/exercism/ data/exercism/exercism.html.md data/facebook/ data/facebook/facebook.fc1943s.md data/facebook/facebook.html.md data/fashion/ data/fashion/fashion.md data/fiction/ data/fiction/acting.md data/fiction/animation.md data/fiction/comics.md data/fiction/fiction.md data/fiction/fiction.mp3.md data/fiction/series.mp4.md data/fiction/stories.md data/filmow/ data/filmow/filmow.fc1943s.md data/filmow/filmow.html.md data/fitness/ data/fitness/fitness.md data/food/ data/food/food.md data/food/food.mp3.md data/gamedev/ data/gamedev/gamedev.pdf.md data/gaming/ data/gaming/gaming.7z.md data/git/ data/git/git.md data/github/ data/github/github.fc1943s.md data/github/github.html.md data/github/github.md data/google/ data/google/google.fc1943s.md data/google/google.i574n.md data/hardware/ data/hardware/hardware.html.md data/hardware/hardware.md data/hip-hop/ data/hip-hop/complexity-and-competition_pt-br.md data/hip-hop/hip-hop.md data/history/ data/history/history.md data/history/history.mp3.md data/hunting/ data/hunting/hunting.md data/identity/ data/identity/identity.fc1943s.7z.md data/identity/identity.fc1943s.pdf.md data/identity/identity.fc1943s.png.md data/identity/identity.프리마.toml data/kakao/ data/kakao/kakao.html.md data/kakao/kakao.i574n.md data/lastfm/ data/lastfm/lastfm.fc1943s.html.md data/lastfm/lastfm.fc1943s.md data/lastfm/lastfm.html.md data/linux/ data/linux/linux.md data/magic/ data/magic/magic.html.md data/magic/magic.md data/magic/magic.pdf.md data/magic/o-caminho-demonico-dos-dados_pt-br.md data/magic/the-book-of-remembering_pt-br.md data/martial-arts/ data/martial-arts/martial-arts.md data/math/ data/math/math.md data/mercadolivre/ data/mercadolivre/mercadolivre.html.md data/mercadolivre/mercadolivre.i574n.md data/microsoft/ data/microsoft/microsoft.html.md data/microsoft/microsoft.i574n.md data/motorcycle/ data/motorcycle/motorcycle.md data/music/ data/music/mecha-haze.7z.md data/music/mecha-haze.html.md data/music/mecha-haze.pdf.md data/music/mixtape-pluto.md data/music/music.md data/music/music.mp3.md data/navigation/ data/navigation/navigation.html.md data/navigation/navigation.png.md data/nix/ data/nix/nix.html.md data/nix/nix.md data/numbers/ data/numbers/numbers.md data/personality/ data/personality/mbti.toml data/personality/personality.html.md data/personality/personality.md data/personality/personality.pdf.md data/personality/personality.png.md data/philosophy/ data/philosophy/philosophy.mp3.md data/physics/ data/physics/physics.md data/politics/ data/politics/hanauittang.md data/politics/politics.md data/politics/politics.mp3.md data/politics/politics.pdf.md data/politics/politics.png.md data/programming/ data/programming/polyglot.html.md data/programming/polyglot.md data/programming/powershell.md data/programming/programming.md data/programming/programming.mp3.md data/programming/rust.md data/programming/rust.pdf.md data/programming/systems.md data/protonmail/ data/protonmail/protonmail.fc1943s.md data/protonmail/protonmail.html.md data/protonmail/protonmail.i574n.md data/psychology/ data/psychology/inner-inferno_pt-br.md data/psychology/psychology.md data/psychology/psychology.mp3.md data/psychology/psychology.pdf.md data/reddit/ data/reddit/reddit.html.md data/reddit/reddit.i574n.md data/relationships/ data/relationships/relationships.md data/religion/ data/religion/hinduism.md data/religion/kimbanda.md data/religion/kimbanda.pdf.md data/religion/maya.md data/religion/religion.md data/religion/religion.pdf.md data/science/ data/science/science.md data/security/ data/security/security.md data/sex/ data/sex/sex.html.md data/sex/sex.md data/sex/sex.mp3.md data/sex/sex.pdf.md data/spiral/ data/spiral/spiral.html.md data/spirituality/ data/spirituality/gvk_en-us.md data/spirituality/gvk_pt-br.md data/spirituality/ressurection_pt-br.md data/spirituality/spirituality.md data/spirituality/spirituality.mp4.md data/spirituality/spirituality.pdf.md data/spirituality/the-book-of-innocence_pt-br.md data/streaming/ data/streaming/streaming.md data/tarot/ data/tarot/tarot.md data/tarot/tarot.png.md data/tech/ data/tech/devilopment_pt-br.md data/tech/tech.epub.md data/tech/tech.html.md data/tech/tech.md data/tech/tech.mp3.md data/tidal/ data/tidal/tidal.html.md data/trakt/ data/trakt/trakt.html.md data/trakt/trakt.i574n.md data/travel/ data/travel/maps.html.md data/travel/maps.md data/travel/maps.png.md data/travel/north korea.png.md data/travel/travel.html.md data/travel/travel.i574n.html.md data/travel/travel.i574n.md data/travel/travel.md data/travel/travel.mp3.md data/travel/travel.png.md data/twitter/ data/twitter/twitter.fc1943s.md data/twitter/twitter.html.md data/twitter/twitter.i574n.md data/typing/ data/typing/typing.html.md data/typing/typing.i574n.md data/typing/typing.md data/vim/ data/vim/vimrc.md data/warez/ data/warez/warez.html.md data/weather/ data/weather/weather.html.md data/weather/weather.md data/web3/ data/web3/near.html.md data/web3/storage.fc1943s.md data/web3/storage.html.md data/web3/web3.fc1943s.7z.md data/web3/web3.fc1943s.md data/web3/web3.html.md data/web3/web3.i574n.md data/web3/web3.md data/web3/web3.pdf.md data/windows/ data/windows/windows.html.md data/windows/windows.md data/work/ data/work/cv.fc1943s.md data/work/cv.fc1943s.pdf.md data/work/cv_pt-br.fc1943s.md data/work/work.fc1943s.pdf.md data/workflow/ data/workflow/tasks.md data/workflow/test.md data/workflow/test.toml data/workflow/vault.fc1943s.7z.md data/workflow/vault.html.md data/workflow/vault.md data/workflow/workflow.md data/workflow/workflow.mp3.md data/writing/ data/writing/writing.html.md data/writing/writing.md scripts/ scripts/init.ps1 scripts/publish-fleek.ps1 scripts/publish.ps1 scripts/workflow.ps1 sent 266,900,183 bytes received 7,522 bytes 59,312,823.33 bytes/sec total size is 266,806,068 speedup is 1.00 vault/scripts/publish.ps1 / targetDir: C:\home\git\vault\target\gh-pages / distDir: C:\home\git\vault/dist / targetDirLog: C:\home\git\vault/target/gh-pages / resolvedTargetDir: C:\home\git\vault\target\gh-pages fatal: destination path 'gh-pages' already exists and is not an empty directory. error: cannot pull with rebase: You have unstaged changes. error: Please commit or stash them. 00:00:00 i #1 documents.main / { args = Array(MutCell(["--source-dir", "C:\home\git\vault", "--dist-dir", "C:\home\git\vault/dist", "--cache-dir", "C:\home\git\vault\target\gh-pages", "--hangul-spec", "por-br"])) } 00:00:00 d #2 documents.run / { source_dir = \\?\C:\home\git\vault; dist_dir = \\?\C:\home\git\vault\dist; cache_dir = \\?\C:\home\git\vault\target\gh-pages; hangul_spec = por-br } 00:00:00 d #3 documents.run / { files_len = 252 } 00:00:00 d #4 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/magic/magic.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/magic/magic.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #5 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fiction/stories.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fiction/stories.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #6 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/ai/ai.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/ai/ai.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #7 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/dialects.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/dialects.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #8 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/windows/windows.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/windows/windows.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #9 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/spirituality/gvk_en-us.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/spirituality/gvk_en-us.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #10 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/typing/typing.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/typing/typing.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #11 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/workflow/vault.fc1943s.7z.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/workflow/vault.fc1943s.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 v #12 > '51563b7ac15182af49fe8a3e4fba27f308d9492a' 00:00:00 v #13 > '49ff14103fb24b78a712c68eda596e167ee58322' 00:00:00 v #13 > '774e2194fe72bc417e8c0e1df440587de46ba008' 00:00:00 v #15 > '8aa274da073635a68a9f909b759505235c2bac57' 00:00:00 v #16 > 'e93e10423e6621a5538596571851d23a593252d3' 00:00:00 v #17 > 'bc664f6fe58e40fdb09e32888ff175b541ca60bb' 00:00:00 v #18 > '099ae9eb8a1733fc1f5da893621fdbb57e5078e0' 00:00:00 v #19 > '92d1d8cd0a34226b7cdf85130b1dd4d1f0423e10' 00:00:00 v #20 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #21 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/ai/ai.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/ai/ai.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #22 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 v #22 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 v #24 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 v #24 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 v #26 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 v #27 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #28 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fiction/stories.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fiction/stories.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 d #29 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/magic/magic.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/magic/magic.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 d #29 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/spirituality/gvk_en-us.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/spirituality/gvk_en-us.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 d #31 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 d #32 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/dialects.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/dialects.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 d #33 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/typing/typing.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/typing/typing.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #34 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #35 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/windows/windows.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/windows/windows.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #36 > 099ae9eb8a1733fc1f5da893621fdbb57e5078e0 00:00:00 v #37 > 8aa274da073635a68a9f909b759505235c2bac57 00:00:00 v #38 > 51563b7ac15182af49fe8a3e4fba27f308d9492a 00:00:00 v #39 > 92d1d8cd0a34226b7cdf85130b1dd4d1f0423e10 00:00:00 v #40 > bc664f6fe58e40fdb09e32888ff175b541ca60bb 00:00:00 v #41 > 49ff14103fb24b78a712c68eda596e167ee58322 00:00:00 v #42 > e93e10423e6621a5538596571851d23a593252d3 00:00:00 v #43 > 774e2194fe72bc417e8c0e1df440587de46ba008 00:00:00 v #44 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 v #45 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 v #46 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 i #47 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.hangul.md.epub } 00:00:00 i #48 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.hangul.md.epub } 00:00:00 i #49 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/stories.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\stories.hangul.md.epub } 00:00:00 v #50 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 v #51 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 v #52 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 d #53 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.hangul.md.epub; new_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.hangul.md.epub; result = 10026 } 00:00:00 i #54 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.hangul.md.pdf } 00:00:00 d #54 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.hangul.md.epub; new_path = c:/home/git/vault/dist/data/ai/ai.hangul.md.epub; result = 77900 } 00:00:00 d #56 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\stories.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fiction/stories.hangul.md.epub; result = 150468 } 00:00:00 i #57 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.hangul.md.pdf } 00:00:00 i #58 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.hangul.md.epub } 00:00:00 i #59 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.hangul.md.epub } 00:00:00 i #60 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/stories.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\stories.hangul.md.pdf } 00:00:00 i #61 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.hangul.md.epub } 00:00:00 d #62 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.hangul.md.pdf; result = 8957 } 00:00:00 i #63 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.hangul.md.html } 00:00:00 d #64 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/windows/windows.html.hangul.md.epub; result = 5584 } 00:00:00 d #65 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/ai/ai.hangul.md.pdf; result = 270471 } 00:00:00 i #66 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.hangul.md.html } 00:00:00 d #67 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.hangul.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.hangul.md.epub; result = 305445 } 00:00:00 d #68 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.hangul.md.html; new_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.hangul.md.html; result = 22716 } 00:00:00 d #69 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/magic/magic.pdf.hangul.md.epub; result = 6752 } 00:00:00 i #69 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.hangul.md.pdf } 00:00:00 d #71 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\stories.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/stories.hangul.md.pdf; result = 209486 } 00:00:00 i #72 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.hangul.md.pdf } 00:00:00 i #73 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.md.epub } 00:00:00 i #74 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.hangul.md.pdf } 00:00:00 i #75 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/stories.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\stories.hangul.md.html } 00:00:00 d #76 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.hangul.md.html; new_path = c:/home/git/vault/dist/data/ai/ai.hangul.md.html; result = 331977 } 00:00:00 i #77 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.md.epub } 00:00:00 d #78 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/windows/windows.html.hangul.md.pdf; result = 3996 } 00:00:00 v #79 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 v #80 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 d #81 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/magic/magic.pdf.hangul.md.pdf; result = 6682 } 00:00:00 d #82 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.md.epub; new_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.md.epub; result = 9459 } 00:00:00 d #83 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.hangul.md.pdf; result = 393049 } 00:00:00 i #84 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.hangul.md.html } 00:00:00 i #84 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.md.pdf } 00:00:00 i #84 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.hangul.md.html } 00:00:00 i #87 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.hangul.md.html } 00:00:00 d #88 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.md.epub; new_path = c:/home/git/vault/dist/data/ai/ai.md.epub; result = 68680 } 00:00:00 i #89 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.md.pdf } 00:00:00 d #90 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\stories.hangul.md.html; new_path = c:/home/git/vault/dist/data/fiction/stories.hangul.md.html; result = 690683 } 00:00:00 d #91 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.md.pdf; result = 20798 } 00:00:00 d #91 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/windows/windows.html.hangul.md.html; result = 10192 } 00:00:00 i #93 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/stories.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\stories.md.epub } 00:00:00 i #94 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.hangul.md.epub } 00:00:00 i #95 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.md.html } 00:00:00 d #96 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/magic/magic.pdf.hangul.md.html; result = 15565 } 00:00:00 i #97 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.md.epub } 00:00:00 i #97 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.md.epub } 00:00:00 d #99 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.hangul.md.html; new_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.hangul.md.html; result = 1320097 } 00:00:00 d #100 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.md.html; new_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.md.html; result = 22691 } 00:00:00 i #101 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.hangul.md.epub } 00:00:00 d #101 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/dialects.hangul.md.epub; result = 14754 } 00:00:00 d #103 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.md.pdf; new_path = c:/home/git/vault/dist/data/ai/ai.md.pdf; result = 214865 } 00:00:00 d #104 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\stories.md.epub; new_path = c:/home/git/vault/dist/data/fiction/stories.md.epub; result = 138020 } 00:00:00 i #105 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.md.html } 00:00:00 i #106 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.md.epub } 00:00:00 i #107 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.hangul.md } 00:00:00 i #108 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.hangul.md.pdf } 00:00:00 i #109 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/stories.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\stories.md.pdf } 00:00:00 d #110 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.md.epub; new_path = c:/home/git/vault/dist/data/magic/magic.pdf.md.epub; result = 6327 } 00:00:00 d #111 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.md.epub; new_path = c:/home/git/vault/dist/data/windows/windows.html.md.epub; result = 5492 } 00:00:00 d #112 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.fc1943s.7z.hangul.md; new_path = c:/home/git/vault/dist/data/workflow/vault.fc1943s.7z.hangul.md; result = 12694 } 00:00:00 d #113 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.md.html; new_path = c:/home/git/vault/dist/data/ai/ai.md.html; result = 227267 } 00:00:00 i #114 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.hangul.md } 00:00:00 i #115 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.md.pdf } 00:00:00 i #116 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.md.pdf } 00:00:00 d #117 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/typing/typing.html.hangul.md.epub; result = 5914 } 00:00:00 d #118 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/dialects.hangul.md.pdf; result = 18125 } 00:00:00 d #119 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.md.epub; result = 271989 } 00:00:00 i #120 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.hangul.md.pdf } 00:00:00 i #121 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.hangul.md.html } 00:00:00 i #121 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.md.pdf } 00:00:00 d #123 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\stories.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/stories.md.pdf; result = 545333 } 00:00:00 i #124 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/stories.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\stories.md.html } 00:00:00 d #125 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.md.pdf; new_path = c:/home/git/vault/dist/data/windows/windows.html.md.pdf; result = 6517 } 00:00:00 d #126 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/magic/magic.pdf.md.pdf; result = 15781 } 00:00:00 d #127 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/typing/typing.html.hangul.md.pdf; result = 4977 } 00:00:00 d #128 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.hangul.md; new_path = c:/home/git/vault/dist/data/ai/ai.hangul.md; result = 300046 } 00:00:00 i #129 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.md.html } 00:00:00 d #130 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/dialects.hangul.md.html; result = 55636 } 00:00:00 d #131 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/workflow/vault.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/workflow/vault.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 i #132 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.md.html } 00:00:00 i #132 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.hangul.md.html } 00:00:00 i #134 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.md.epub } 00:00:00 d #135 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/ai/ai.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/ai/ai.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #136 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.md.html; new_path = c:/home/git/vault/dist/data/windows/windows.html.md.html; result = 10128 } 00:00:00 d #137 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.md.html; new_path = c:/home/git/vault/dist/data/magic/magic.pdf.md.html; result = 13789 } 00:00:00 d #138 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.md.pdf; result = 1037850 } 00:00:00 d #139 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/typing/typing.html.hangul.md.html; result = 11391 } 00:00:00 d #140 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\stories.md.html; new_path = c:/home/git/vault/dist/data/fiction/stories.md.html; result = 486630 } 00:00:00 i #141 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.hangul.md } 00:00:00 i #141 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.hangul.md } 00:00:00 i #143 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.md.epub } 00:00:00 i #143 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/stories.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\stories.hangul.md } 00:00:00 d #145 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.html.hangul.md; new_path = c:/home/git/vault/dist/data/windows/windows.html.hangul.md; result = 204 } 00:00:00 d #146 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/windows/windows.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/windows/windows.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 i #147 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.md.html } 00:00:00 d #148 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.md.epub; new_path = c:/home/git/vault/dist/data/typing/typing.html.md.epub; result = 5866 } 00:00:00 d #150 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.md.epub; new_path = c:/home/git/vault/dist/data/dialects/dialects.md.epub; result = 13689 } 00:00:00 d #148 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/magic/magic.pdf.hangul.md; result = 4606 } 00:00:00 d #151 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\stories.hangul.md; new_path = c:/home/git/vault/dist/data/fiction/stories.hangul.md; result = 591526 } 00:00:00 i #152 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.md.pdf } 00:00:00 d #153 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/filmow/filmow.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/filmow/filmow.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #154 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/magic/o-caminho-demonico-dos-dados_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/magic/o-caminho-demonico-dos-dados_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 i #155 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.md.pdf } 00:00:00 d #156 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.md.html; new_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.md.html; result = 915676 } 00:00:00 d #157 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.md.pdf; new_path = c:/home/git/vault/dist/data/typing/typing.html.md.pdf; result = 7480 } 00:00:00 i #158 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.md.html } 00:00:00 d #159 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/dialects.md.pdf; result = 44687 } 00:00:00 i #160 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.md.html } 00:00:00 i #161 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.hangul.md } 00:00:00 d #162 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.md.html; new_path = c:/home/git/vault/dist/data/dialects/dialects.md.html; result = 42513 } 00:00:00 d #163 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.md.html; new_path = c:/home/git/vault/dist/data/typing/typing.html.md.html; result = 11233 } 00:00:00 i #164 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.hangul.md } 00:00:00 i #165 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.hangul.md } 00:00:00 d #166 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.html.hangul.md; new_path = c:/home/git/vault/dist/data/typing/typing.html.hangul.md; result = 1149 } 00:00:00 d #167 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_en-us.hangul.md; new_path = c:/home/git/vault/dist/data/spirituality/gvk_en-us.hangul.md; result = 1201409 } 00:00:00 d #168 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/typing/typing.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/typing/typing.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #169 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/dialects.hangul.md; result = 36913 } 00:00:00 d #170 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/spirituality/gvk_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/spirituality/gvk_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #171 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/dialects.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/dialects.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 v #172 > 'a50cce7fd0d103cd8c2be18cdf0bd82a74690b3a' 00:00:00 v #173 > '41c27f4e0fbaa63ad44e6d51714f29b18cca7124' 00:00:00 v #174 > '03383a9384a0859e4842d78e86808657db8be433' 00:00:00 v #175 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 v #176 > '41908b616ee0d23d4bf8e8d74c949bdd21a2abf3' 00:00:00 d #177 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/workflow/vault.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/workflow/vault.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #178 > 'bc2fc4871a825475ed82471fa09ac9ead438a16f' 00:00:00 v #179 > '817107c0597fbf70a405d513f5860e2a10c82620' 00:00:00 v #180 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #181 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/ai/ai.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/ai/ai.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #182 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #183 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/windows/windows.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/windows/windows.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #184 > 'd31795b1f438dc6014c26e770c0731d65ff3aac2' 00:00:00 v #185 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 v #186 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #187 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/filmow/filmow.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/filmow/filmow.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 d #188 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #189 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #190 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/typing/typing.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/typing/typing.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #191 > '9d8a58110fa4acf8f547c88b5246fdd2e2fce405' 00:00:00 v #192 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #193 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/spirituality/gvk_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/spirituality/gvk_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #194 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #195 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/dialects.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/dialects.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #196 > 41c27f4e0fbaa63ad44e6d51714f29b18cca7124 00:00:00 v #197 > a50cce7fd0d103cd8c2be18cdf0bd82a74690b3a 00:00:00 v #198 > 41908b616ee0d23d4bf8e8d74c949bdd21a2abf3 00:00:00 v #199 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 i #200 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.hangul.md.epub } 00:00:00 d #201 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/ai/ai.mp3.hangul.md.epub; result = 6231 } 00:00:00 i #202 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.hangul.md.pdf } 00:00:00 v #203 > bc2fc4871a825475ed82471fa09ac9ead438a16f 00:00:00 d #204 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/ai/ai.mp3.hangul.md.pdf; result = 4899 } 00:00:00 i #205 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.hangul.md.html } 00:00:00 v #206 > 817107c0597fbf70a405d513f5860e2a10c82620 00:00:00 d #207 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/ai/ai.mp3.hangul.md.html; result = 13563 } 00:00:00 v #208 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 v #209 > 03383a9384a0859e4842d78e86808657db8be433 00:00:00 i #210 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.md.epub } 00:00:00 d #211 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.md.epub; new_path = c:/home/git/vault/dist/data/ai/ai.mp3.md.epub; result = 5964 } 00:00:00 i #212 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.md.pdf } 00:00:00 i #213 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.hangul.md.epub } 00:00:00 d #214 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/ai/ai.mp3.md.pdf; result = 10630 } 00:00:00 i #215 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.md.html } 00:00:00 d #216 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/workflow/vault.html.hangul.md.epub; result = 5536 } 00:00:00 i #217 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.hangul.md.pdf } 00:00:00 d #218 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.md.html; new_path = c:/home/git/vault/dist/data/ai/ai.mp3.md.html; result = 12131 } 00:00:00 i #219 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.hangul.md } 00:00:00 d #220 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/vault.html.hangul.md.pdf; result = 3958 } 00:00:00 d #221 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/ai/ai.mp3.hangul.md; result = 3316 } 00:00:00 i #222 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.hangul.md.html } 00:00:00 d #223 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/workflow/vault.html.hangul.md.html; result = 10125 } 00:00:00 v #223 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 i #225 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.md.epub } 00:00:00 d #226 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.md.epub; new_path = c:/home/git/vault/dist/data/workflow/vault.html.md.epub; result = 5458 } 00:00:00 i #227 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.md.pdf } 00:00:00 d #228 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/ai/ai.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/ai/ai.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 i #229 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.hangul.md.epub } 00:00:00 d #230 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/vault.html.md.pdf; result = 6122 } 00:00:00 i #231 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.md.html } 00:00:00 d #232 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.hangul.md.epub; result = 5511 } 00:00:00 i #233 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.hangul.md.pdf } 00:00:00 d #234 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.md.html; new_path = c:/home/git/vault/dist/data/workflow/vault.html.md.html; result = 10079 } 00:00:00 d #235 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.hangul.md.pdf; result = 4534 } 00:00:00 i #236 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.hangul.md } 00:00:00 i #237 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.hangul.md.html } 00:00:00 d #238 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.html.hangul.md; new_path = c:/home/git/vault/dist/data/workflow/vault.html.hangul.md; result = 158 } 00:00:00 d #239 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.hangul.md.html; result = 10083 } 00:00:00 i #240 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.md.epub } 00:00:00 d #241 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.md.epub; result = 5448 } 00:00:00 i #242 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.md.pdf } 00:00:00 d #243 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.md.pdf; result = 6270 } 00:00:00 v #244 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 d #245 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/workflow/vault.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/workflow/vault.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 i #246 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.md.html } 00:00:00 v #247 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 d #248 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.md.html; result = 10056 } 00:00:00 i #249 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.hangul.md } 00:00:00 v #250 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 d #251 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/filmow/filmow.fc1943s.hangul.md; result = 103 } 00:00:00 i #252 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.hangul.md.epub } 00:00:00 i #253 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.hangul.md.epub } 00:00:00 d #254 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.hangul.md.epub; result = 69109 } 00:00:00 i #255 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.hangul.md.pdf } 00:00:00 d #256 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.hangul.md.epub; new_path = c:/home/git/vault/dist/data/windows/windows.hangul.md.epub; result = 10248 } 00:00:00 i #257 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.hangul.md.pdf } 00:00:00 i #257 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.hangul.md.epub } 00:00:00 d #259 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.hangul.md.pdf; result = 79893 } 00:00:00 i #260 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.hangul.md.html } 00:00:00 d #261 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/filmow/filmow.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/filmow/filmow.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #262 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/typing/typing.i574n.hangul.md.epub; result = 5512 } 00:00:00 d #263 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/windows/windows.hangul.md.pdf; result = 15362 } 00:00:00 i #264 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.hangul.md.pdf } 00:00:00 d #266 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.hangul.md.html; result = 293260 } 00:00:00 i #264 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.hangul.md.html } 00:00:00 i #267 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.md.epub } 00:00:00 d #268 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/typing/typing.i574n.hangul.md.pdf; result = 4136 } 00:00:00 i #269 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.hangul.md.html } 00:00:00 d #270 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.hangul.md.html; new_path = c:/home/git/vault/dist/data/windows/windows.hangul.md.html; result = 33121 } 00:00:00 d #271 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.md.epub; result = 61781 } 00:00:00 d #272 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/typing/typing.i574n.hangul.md.html; result = 10084 } 00:00:00 i #273 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.md.pdf } 00:00:00 i #274 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.md.epub } 00:00:00 i #275 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.md.epub } 00:00:00 d #276 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.md.epub; new_path = c:/home/git/vault/dist/data/windows/windows.md.epub; result = 9420 } 00:00:00 d #276 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.md.epub; new_path = c:/home/git/vault/dist/data/typing/typing.i574n.md.epub; result = 5446 } 00:00:00 i #278 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.md.pdf } 00:00:00 i #278 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.md.pdf } 00:00:00 d #280 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.md.pdf; result = 230927 } 00:00:00 i #281 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.md.html } 00:00:00 d #282 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/typing/typing.i574n.md.pdf; result = 6289 } 00:00:00 d #283 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.md.pdf; new_path = c:/home/git/vault/dist/data/windows/windows.md.pdf; result = 38935 } 00:00:00 i #284 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.md.html } 00:00:00 i #285 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.md.html } 00:00:00 d #286 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.md.html; new_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.md.html; result = 204770 } 00:00:00 d #287 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.md.html; new_path = c:/home/git/vault/dist/data/typing/typing.i574n.md.html; result = 10052 } 00:00:00 i #288 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.hangul.md } 00:00:00 i #289 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.hangul.md } 00:00:00 d #290 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.md.html; new_path = c:/home/git/vault/dist/data/windows/windows.md.html; result = 26664 } 00:00:00 d #291 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/typing/typing.i574n.hangul.md; result = 104 } 00:00:00 i #292 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/windows/windows.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\windows.hangul.md } 00:00:00 v #293 > d31795b1f438dc6014c26e770c0731d65ff3aac2 00:00:00 d #294 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\o-caminho-demonico-dos-dados_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/magic/o-caminho-demonico-dos-dados_pt-br.hangul.md; result = 267218 } 00:00:00 d #295 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\windows.hangul.md; new_path = c:/home/git/vault/dist/data/windows/windows.hangul.md; result = 16490 } 00:00:00 d #296 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/typing/typing.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/typing/typing.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #297 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/magic/the-book-of-remembering_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/magic/the-book-of-remembering_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #298 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/work/cv.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/work/cv.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 v #299 > 9d8a58110fa4acf8f547c88b5246fdd2e2fce405 00:00:00 v #300 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 i #301 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.hangul.md.epub } 00:00:00 d #302 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.hangul.md.epub; result = 329465 } 00:00:00 i #303 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.hangul.md.pdf } 00:00:00 v #304 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 d #305 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.hangul.md.pdf; result = 414344 } 00:00:00 i #306 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.hangul.md.html } 00:00:00 i #307 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.hangul.md.epub } 00:00:00 d #308 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.hangul.md.epub; result = 5727 } 00:00:00 i #309 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.hangul.md.pdf } 00:00:00 d #310 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.hangul.md.pdf; result = 4865 } 00:00:00 d #311 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.hangul.md.html; result = 1391899 } 00:00:00 i #312 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.md.epub } 00:00:00 i #313 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.hangul.md.html } 00:00:00 d #314 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.hangul.md.html; result = 10426 } 00:00:00 i #315 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.md.epub } 00:00:00 d #316 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.md.epub; result = 292945 } 00:00:00 d #317 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.md.epub; new_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.md.epub; result = 5592 } 00:00:00 i #318 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.md.pdf } 00:00:00 i #319 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.md.pdf } 00:00:00 d #320 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.md.pdf; result = 8318 } 00:00:00 i #321 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.md.html } 00:00:00 d #322 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.md.html; new_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.md.html; result = 10266 } 00:00:00 i #323 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.hangul.md } 00:00:00 d #324 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dialects.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/dialects.pdf.hangul.md; result = 438 } 00:00:00 d #325 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.md.pdf; result = 1102930 } 00:00:00 i #326 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.md.html } 00:00:00 d #327 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/english.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/english.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #328 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.md.html; new_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.md.html; result = 991541 } 00:00:00 i #329 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.hangul.md } 00:00:00 d #330 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gvk_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/spirituality/gvk_pt-br.hangul.md; result = 1263050 } 00:00:00 v #331 > '67b9900d52ac2dcff335ad67ffd7f56d6b4f9b01' 00:00:00 d #332 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/spirituality/ressurection_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/spirituality/ressurection_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 v #333 > '42cdf7b6ccd8f267a0ab14ed4302d2666126f920' 00:00:00 v #334 > 'f014c8e3c31d9f07da79aab6bae53f0d944e95be' 00:00:00 v #335 > '2eaad8018400c59788eb9fdfb158408967c2a680' 00:00:00 v #336 > '48dcc245fdab8c3eb81effb7c26587051a8741e8' 00:00:00 v #337 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #338 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/workflow/vault.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/workflow/vault.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #339 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #340 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/ai/ai.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/ai/ai.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #341 > '1d0d3682925ba7dd9f8b40c3f0c9a0b2aef9107c' 00:00:00 v #342 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 v #343 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #344 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/filmow/filmow.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/filmow/filmow.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 d #345 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/typing/typing.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/typing/typing.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #346 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #347 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #348 > '094c61b8db2dc16a5a80d1b7dcc16cadde7b3c7e' 00:00:00 v #349 > 'cfdc145226339017389a66169f0e19bba4ca6d65' 00:00:00 v #350 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #351 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/work/cv.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/work/cv.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #352 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #353 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/english.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/english.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #354 > 42cdf7b6ccd8f267a0ab14ed4302d2666126f920 00:00:00 v #355 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:00 d #356 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:00 v #357 > f014c8e3c31d9f07da79aab6bae53f0d944e95be 00:00:00 v #358 > 2eaad8018400c59788eb9fdfb158408967c2a680 00:00:00 v #359 > 67b9900d52ac2dcff335ad67ffd7f56d6b4f9b01 00:00:00 v #360 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 v #361 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 v #362 > 48dcc245fdab8c3eb81effb7c26587051a8741e8 00:00:00 i #363 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.hangul.md.epub } 00:00:00 v #364 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 i #365 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.hangul.md.epub } 00:00:00 d #366 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/ai/ai.pdf.hangul.md.epub; result = 5671 } 00:00:00 d #367 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/filmow/filmow.html.hangul.md.epub; result = 5787 } 00:00:00 i #368 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.hangul.md.pdf } 00:00:00 i #369 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.hangul.md.pdf } 00:00:00 d #370 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/ai/ai.pdf.hangul.md.pdf; result = 4712 } 00:00:00 i #371 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.hangul.md.html } 00:00:00 d #372 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/filmow/filmow.html.hangul.md.pdf; result = 5321 } 00:00:00 v #373 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 i #374 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.hangul.md.html } 00:00:00 i #375 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.hangul.md.epub } 00:00:00 d #376 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/ai/ai.pdf.hangul.md.html; result = 10345 } 00:00:00 i #377 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.md.epub } 00:00:00 d #378 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/filmow/filmow.html.hangul.md.html; result = 14722 } 00:00:00 i #379 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.md.epub } 00:00:00 d #380 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.hangul.md.epub; new_path = c:/home/git/vault/dist/data/typing/typing.hangul.md.epub; result = 6711 } 00:00:00 d #381 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.md.epub; new_path = c:/home/git/vault/dist/data/ai/ai.pdf.md.epub; result = 5549 } 00:00:00 i #382 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.hangul.md.pdf } 00:00:00 d #383 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.md.epub; new_path = c:/home/git/vault/dist/data/filmow/filmow.html.md.epub; result = 5627 } 00:00:00 i #384 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.md.pdf } 00:00:00 d #385 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/typing/typing.hangul.md.pdf; result = 6124 } 00:00:00 i #386 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.hangul.md.epub } 00:00:00 i #387 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.md.pdf } 00:00:00 i #388 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.hangul.md.html } 00:00:00 d #389 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/ai/ai.pdf.md.pdf; result = 7659 } 00:00:00 i #390 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.md.html } 00:00:00 d #391 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.hangul.md.epub; new_path = c:/home/git/vault/dist/data/workflow/vault.hangul.md.epub; result = 5433 } 00:00:00 d #392 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.md.pdf; new_path = c:/home/git/vault/dist/data/filmow/filmow.html.md.pdf; result = 8657 } 00:00:00 d #393 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.hangul.md.html; new_path = c:/home/git/vault/dist/data/typing/typing.hangul.md.html; result = 13344 } 00:00:00 i #394 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.md.html } 00:00:00 i #395 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.hangul.md.pdf } 00:00:00 i #396 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.md.epub } 00:00:00 d #397 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.md.html; new_path = c:/home/git/vault/dist/data/ai/ai.pdf.md.html; result = 10204 } 00:00:00 i #398 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/ai.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.hangul.md } 00:00:00 d #399 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/vault.hangul.md.pdf; result = 3454 } 00:00:00 d #400 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.md.html; new_path = c:/home/git/vault/dist/data/filmow/filmow.html.md.html; result = 13836 } 00:00:00 d #401 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.md.epub; new_path = c:/home/git/vault/dist/data/typing/typing.md.epub; result = 6377 } 00:00:00 i #402 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.hangul.md.html } 00:00:00 i #402 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/filmow/filmow.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.hangul.md } 00:00:00 i #402 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.md.pdf } 00:00:00 d #405 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ai.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/ai/ai.pdf.hangul.md; result = 377 } 00:00:00 d #406 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.hangul.md.html; new_path = c:/home/git/vault/dist/data/workflow/vault.hangul.md.html; result = 9950 } 00:00:00 d #406 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\filmow.html.hangul.md; new_path = c:/home/git/vault/dist/data/filmow/filmow.html.hangul.md; result = 3064 } 00:00:00 d #408 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.md.pdf; new_path = c:/home/git/vault/dist/data/typing/typing.md.pdf; result = 14671 } 00:00:00 i #409 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.md.epub } 00:00:00 i #410 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.md.html } 00:00:00 d #411 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.md.epub; new_path = c:/home/git/vault/dist/data/workflow/vault.md.epub; result = 5407 } 00:00:00 d #412 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.md.html; new_path = c:/home/git/vault/dist/data/typing/typing.md.html; result = 12254 } 00:00:00 i #413 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/typing/typing.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\typing.hangul.md } 00:00:00 i #413 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.md.pdf } 00:00:00 d #415 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/ai/chatgpt.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/ai/chatgpt.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #416 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/vault.md.pdf; result = 4526 } 00:00:00 d #417 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\typing.hangul.md; new_path = c:/home/git/vault/dist/data/typing/typing.hangul.md; result = 3116 } 00:00:00 i #418 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.md.html } 00:00:00 d #419 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fitness/fitness.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fitness/fitness.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 d #420 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.md.html; new_path = c:/home/git/vault/dist/data/workflow/vault.md.html; result = 9943 } 00:00:00 d #421 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/vim/vimrc.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/vim/vimrc.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 i #422 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/vault.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vault.hangul.md } 00:00:00 d #423 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vault.hangul.md; new_path = c:/home/git/vault/dist/data/workflow/vault.hangul.md; result = 39 } 00:00:00 v #424 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:00 d #425 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/workflow/workflow.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/workflow/workflow.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:00 i #426 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.hangul.md.epub } 00:00:00 d #427 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.hangul.md.epub; result = 195458 } 00:00:00 i #428 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.hangul.md.pdf } 00:00:00 d #429 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.hangul.md.pdf; result = 203453 } 00:00:00 i #430 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.hangul.md.html } 00:00:00 d #431 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.hangul.md.html; result = 786300 } 00:00:00 i #432 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.md.epub } 00:00:00 d #433 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.md.epub; result = 171495 } 00:00:00 i #434 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.md.pdf } 00:00:00 v #435 > 1d0d3682925ba7dd9f8b40c3f0c9a0b2aef9107c 00:00:00 d #436 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.md.pdf; result = 617393 } 00:00:00 i #437 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.md.html } 00:00:01 v #438 > 094c61b8db2dc16a5a80d1b7dcc16cadde7b3c7e 00:00:01 d #439 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.md.html; new_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.md.html; result = 540206 } 00:00:01 i #440 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.hangul.md } 00:00:01 d #441 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-remembering_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/magic/the-book-of-remembering_pt-br.hangul.md; result = 739723 } 00:00:01 d #442 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/martial-arts/martial-arts.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/martial-arts/martial-arts.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 v #443 > cfdc145226339017389a66169f0e19bba4ca6d65 00:00:01 v #444 > '92c1cc9e4652398e85a563d1e6b80d0c32a875cf' 00:00:01 v #445 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 v #446 > '9e9633005f4854af5132be43c52c81f1abc3118c' 00:00:01 v #447 > '24833b2f816481cdd369f731b8c534211a13069c' 00:00:01 i #448 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/english.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\english.hangul.md.epub } 00:00:01 d #449 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\english.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/english.hangul.md.epub; result = 11327 } 00:00:01 i #450 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/english.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\english.hangul.md.pdf } 00:00:01 d #451 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\english.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/english.hangul.md.pdf; result = 7596 } 00:00:01 i #452 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/english.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\english.hangul.md.html } 00:00:01 d #453 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\english.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/english.hangul.md.html; result = 27975 } 00:00:01 i #454 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/english.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\english.md.epub } 00:00:01 v #455 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 v #456 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 d #457 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\english.md.epub; new_path = c:/home/git/vault/dist/data/dialects/english.md.epub; result = 10376 } 00:00:01 i #458 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/english.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\english.md.pdf } 00:00:01 d #459 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\english.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/english.md.pdf; result = 22689 } 00:00:01 i #460 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/english.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\english.md.html } 00:00:01 i #461 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.hangul.md.epub } 00:00:01 d #461 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\english.md.html; new_path = c:/home/git/vault/dist/data/dialects/english.md.html; result = 22049 } 00:00:01 i #463 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/english.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\english.hangul.md } 00:00:01 v #464 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #465 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/ai/chatgpt.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/ai/chatgpt.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 i #466 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.hangul.md.epub } 00:00:01 d #467 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\english.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/english.hangul.md; result = 16757 } 00:00:01 d #468 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/korean.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/korean.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #469 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.hangul.md.epub; result = 12317 } 00:00:01 d #470 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.hangul.md.epub; result = 206420 } 00:00:01 v #471 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 v #472 > '23758be8f32af0fbd2cdcafa908f9b54cc000dc7' 00:00:01 i #473 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.hangul.md.pdf } 00:00:01 v #474 > '3366dc77515fb705fc648bdabb7f4020a39d5abb' 00:00:01 i #475 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.hangul.md.pdf } 00:00:01 d #476 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/workflow/workflow.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/workflow/workflow.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 d #477 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.hangul.md.pdf; result = 12619 } 00:00:01 d #478 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.hangul.md.pdf; result = 208459 } 00:00:01 i #479 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.hangul.md.html } 00:00:01 i #480 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.hangul.md.html } 00:00:01 d #481 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.hangul.md.html; result = 32163 } 00:00:01 i #482 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.md.epub } 00:00:01 d #483 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.hangul.md.html; result = 855278 } 00:00:01 d #484 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.md.epub; result = 11214 } 00:00:01 i #485 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.md.pdf } 00:00:01 v #486 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 i #486 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.md.epub } 00:00:01 d #488 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.md.pdf; result = 43968 } 00:00:01 d #489 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.md.epub; result = 181148 } 00:00:01 i #490 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.md.pdf } 00:00:01 i #491 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.md.html } 00:00:01 d #492 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fitness/fitness.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fitness/fitness.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 d #493 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.md.html; result = 25325 } 00:00:01 i #494 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.hangul.md } 00:00:01 d #495 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.md.pdf; result = 646237 } 00:00:01 v #496 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #497 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.hangul.md; result = 19270 } 00:00:01 d #498 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/martial-arts/martial-arts.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/martial-arts/martial-arts.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 i #499 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.md.html } 00:00:01 d #500 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/work/cv.fc1943s.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/work/cv.fc1943s.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #501 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.md.html; new_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.md.html; result = 592691 } 00:00:01 i #502 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.hangul.md } 00:00:01 v #503 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #504 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ressurection_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/spirituality/ressurection_pt-br.hangul.md; result = 822094 } 00:00:01 d #505 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/vim/vimrc.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/vim/vimrc.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 d #506 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/spirituality/spirituality.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/spirituality/spirituality.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 v #507 > 9e9633005f4854af5132be43c52c81f1abc3118c 00:00:01 v #508 > 23758be8f32af0fbd2cdcafa908f9b54cc000dc7 00:00:01 v #509 > '5e27ade0698b4ee7994791fd595a4fcbdcf49b21' 00:00:01 v #510 > 92c1cc9e4652398e85a563d1e6b80d0c32a875cf 00:00:01 v #511 > 24833b2f816481cdd369f731b8c534211a13069c 00:00:01 v #512 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 v #513 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 v #514 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 d #515 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/korean.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/korean.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #516 > '26dcc4e83c56ad8b2a105ae037c8d26685ce75cb' 00:00:01 i #517 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.hangul.md.epub } 00:00:01 i #518 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.hangul.md.epub } 00:00:01 v #519 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 d #520 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/ai/chatgpt.html.hangul.md.epub; result = 5514 } 00:00:01 i #521 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.hangul.md.pdf } 00:00:01 v #522 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 d #523 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.hangul.md.epub; new_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.hangul.md.epub; result = 38033 } 00:00:01 v #524 > 3366dc77515fb705fc648bdabb7f4020a39d5abb 00:00:01 d #525 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/ai/chatgpt.html.hangul.md.pdf; result = 3758 } 00:00:01 i #526 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.hangul.md.pdf } 00:00:01 i #527 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.hangul.md.html } 00:00:01 i #528 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fitness/fitness.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fitness.hangul.md.epub } 00:00:01 d #529 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.hangul.md.pdf; result = 44090 } 00:00:01 d #529 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/ai/chatgpt.html.hangul.md.html; result = 10100 } 00:00:01 i #531 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.md.epub } 00:00:01 i #532 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.hangul.md.html } 00:00:01 d #533 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fitness.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fitness/fitness.hangul.md.epub; result = 7127 } 00:00:01 i #534 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.hangul.md.epub } 00:00:01 i #535 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fitness/fitness.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fitness.hangul.md.pdf } 00:00:01 d #536 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.md.epub; new_path = c:/home/git/vault/dist/data/ai/chatgpt.html.md.epub; result = 5447 } 00:00:01 d #537 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.hangul.md.html; new_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.hangul.md.html; result = 188516 } 00:00:01 d #538 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.hangul.md.epub; new_path = c:/home/git/vault/dist/data/workflow/workflow.hangul.md.epub; result = 42389 } 00:00:01 i #539 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.md.pdf } 00:00:01 i #540 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.md.epub } 00:00:01 i #541 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.hangul.md.pdf } 00:00:01 d #542 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fitness.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fitness/fitness.hangul.md.pdf; result = 7244 } 00:00:01 d #543 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.md.pdf; new_path = c:/home/git/vault/dist/data/ai/chatgpt.html.md.pdf; result = 5892 } 00:00:01 i #544 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fitness/fitness.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fitness.hangul.md.html } 00:00:01 d #545 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.md.epub; new_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.md.epub; result = 33383 } 00:00:01 i #546 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.md.html } 00:00:01 i #547 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.md.pdf } 00:00:01 d #548 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/workflow.hangul.md.pdf; result = 63919 } 00:00:01 d #549 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fitness.hangul.md.html; new_path = c:/home/git/vault/dist/data/fitness/fitness.hangul.md.html; result = 14757 } 00:00:01 d #550 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.md.html; new_path = c:/home/git/vault/dist/data/ai/chatgpt.html.md.html; result = 10065 } 00:00:01 i #551 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.hangul.md.html } 00:00:01 i #552 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.hangul.md } 00:00:01 i #553 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fitness/fitness.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fitness.md.epub } 00:00:01 d #554 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.html.hangul.md; new_path = c:/home/git/vault/dist/data/ai/chatgpt.html.hangul.md; result = 133 } 00:00:01 d #555 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.md.pdf; new_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.md.pdf; result = 133631 } 00:00:01 i #556 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.md.html } 00:00:01 d #557 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fitness.md.epub; new_path = c:/home/git/vault/dist/data/fitness/fitness.md.epub; result = 6723 } 00:00:01 d #558 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.hangul.md.html; new_path = c:/home/git/vault/dist/data/workflow/workflow.hangul.md.html; result = 189367 } 00:00:01 i #559 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fitness/fitness.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fitness.md.pdf } 00:00:01 i #560 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.md.epub } 00:00:01 d #561 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.md.html; new_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.md.html; result = 131276 } 00:00:01 d #562 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fitness.md.pdf; new_path = c:/home/git/vault/dist/data/fitness/fitness.md.pdf; result = 18508 } 00:00:01 i #563 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.hangul.md } 00:00:01 i #564 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fitness/fitness.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fitness.md.html } 00:00:01 d #565 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.md.epub; new_path = c:/home/git/vault/dist/data/workflow/workflow.md.epub; result = 39242 } 00:00:01 v #566 > 'da686aa9d0ac03f64ff44dbebfcaf3fa7dacdf6a' 00:00:01 i #567 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.md.pdf } 00:00:01 d #568 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\martial-arts.hangul.md; new_path = c:/home/git/vault/dist/data/martial-arts/martial-arts.hangul.md; result = 156203 } 00:00:01 d #569 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/ai/chatgpt.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/ai/chatgpt.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #570 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fitness.md.html; new_path = c:/home/git/vault/dist/data/fitness/fitness.md.html; result = 13224 } 00:00:01 i #571 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fitness/fitness.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fitness.hangul.md } 00:00:01 d #572 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/workflow.md.pdf; result = 170155 } 00:00:01 d #573 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fitness.hangul.md; new_path = c:/home/git/vault/dist/data/fitness/fitness.hangul.md; result = 4527 } 00:00:01 i #574 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.md.html } 00:00:01 d #575 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.md.html; new_path = c:/home/git/vault/dist/data/workflow/workflow.md.html; result = 159326 } 00:00:01 d #576 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/math/math.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/math/math.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 i #577 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.hangul.md } 00:00:01 d #578 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/food/food.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/food/food.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #579 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.hangul.md; new_path = c:/home/git/vault/dist/data/workflow/workflow.hangul.md; result = 142620 } 00:00:01 v #580 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 v #581 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #582 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/workflow/workflow.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/workflow/workflow.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #583 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 i #584 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/vim/vimrc.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.hangul.md.epub } 00:00:01 d #585 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.hangul.md.epub; new_path = c:/home/git/vault/dist/data/vim/vimrc.hangul.md.epub; result = 6821 } 00:00:01 i #586 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/vim/vimrc.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.hangul.md.pdf } 00:00:01 d #587 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/vim/vimrc.hangul.md.pdf; result = 7869 } 00:00:01 i #588 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/vim/vimrc.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.hangul.md.html } 00:00:01 d #589 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.hangul.md.html; new_path = c:/home/git/vault/dist/data/vim/vimrc.hangul.md.html; result = 20818 } 00:00:01 i #590 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/vim/vimrc.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.md.epub } 00:00:01 d #591 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.md.epub; new_path = c:/home/git/vault/dist/data/vim/vimrc.md.epub; result = 6589 } 00:00:01 i #592 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/vim/vimrc.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.md.pdf } 00:00:01 d #593 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.md.pdf; new_path = c:/home/git/vault/dist/data/vim/vimrc.md.pdf; result = 13552 } 00:00:01 i #594 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/vim/vimrc.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.md.html } 00:00:01 d #595 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.md.html; new_path = c:/home/git/vault/dist/data/vim/vimrc.md.html; result = 18853 } 00:00:01 i #596 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/vim/vimrc.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.hangul.md } 00:00:01 d #597 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\vimrc.hangul.md; new_path = c:/home/git/vault/dist/data/vim/vimrc.hangul.md; result = 5518 } 00:00:01 d #598 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/warez/warez.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/warez/warez.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 v #599 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #600 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/spirituality/spirituality.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/spirituality/spirituality.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #601 > 5e27ade0698b4ee7994791fd595a4fcbdcf49b21 00:00:01 v #602 > '5a67a00b2a87bc4d1fd4b4a8a03cc9ac996871f8' 00:00:01 v #603 > 'bdb231b92700c577e134d2ae8d941fd84f388693' 00:00:01 v #604 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 v #605 > '70e7431d7fa3cd9c92de39e0deffacdb7c5f7005' 00:00:01 i #606 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.hangul.md.epub } 00:00:01 v #607 > '064a22fe29f93a179c0a78a90e69c2837a9bef3b' 00:00:01 v #608 > 26dcc4e83c56ad8b2a105ae037c8d26685ce75cb 00:00:01 d #609 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.html.hangul.md.epub; result = 5825 } 00:00:01 i #610 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.hangul.md.pdf } 00:00:01 d #611 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.html.hangul.md.pdf; result = 4703 } 00:00:01 i #612 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.hangul.md.html } 00:00:01 d #613 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.html.hangul.md.html; result = 13006 } 00:00:01 i #614 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.md.epub } 00:00:01 d #615 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.html.md.epub; result = 5668 } 00:00:01 i #616 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.md.pdf } 00:00:01 d #617 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.html.md.pdf; result = 8992 } 00:00:01 i #618 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.md.html } 00:00:01 v #619 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #620 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.html.md.html; result = 12334 } 00:00:01 i #621 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.hangul.md } 00:00:01 v #622 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #622 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.html.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/korean.html.hangul.md; result = 2149 } 00:00:01 d #624 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/food/food.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/food/food.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 d #625 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/ai/chatgpt.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/ai/chatgpt.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #626 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 v #627 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #628 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/korean.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/korean.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 v #629 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #630 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/workflow/workflow.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/workflow/workflow.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 i #631 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.hangul.md.epub } 00:00:01 d #632 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/math/math.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/math/math.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 d #633 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.hangul.md.epub; result = 5746 } 00:00:01 i #634 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.hangul.md.pdf } 00:00:01 d #635 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.hangul.md.pdf; result = 4759 } 00:00:01 i #636 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.hangul.md.html } 00:00:01 d #637 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.hangul.md.html; result = 10812 } 00:00:01 i #638 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.md.epub } 00:00:01 d #639 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.md.epub; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.md.epub; result = 5598 } 00:00:01 i #640 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.md.pdf } 00:00:01 d #641 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.md.pdf; result = 7620 } 00:00:01 i #642 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.md.html } 00:00:01 d #643 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.md.html; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.md.html; result = 10522 } 00:00:01 i #644 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.hangul.md } 00:00:01 d #645 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv.fc1943s.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/work/cv.fc1943s.pdf.hangul.md; result = 755 } 00:00:01 v #646 > 'd6e3efa4eceeb79061d0e8a8d516036f770d4691' 00:00:01 d #647 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/work/cv_pt-br.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/work/cv_pt-br.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 v #648 > da686aa9d0ac03f64ff44dbebfcaf3fa7dacdf6a 00:00:01 v #649 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 v #650 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 d #651 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/warez/warez.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/warez/warez.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 i #652 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.hangul.md.epub } 00:00:01 d #653 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.hangul.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.hangul.md.epub; result = 26366 } 00:00:01 i #654 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.hangul.md.pdf } 00:00:01 d #655 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.hangul.md.pdf; result = 27386 } 00:00:01 i #656 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.hangul.md.html } 00:00:01 d #657 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.hangul.md.html; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.hangul.md.html; result = 98846 } 00:00:01 i #658 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.md.epub } 00:00:01 d #659 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.md.epub; result = 24236 } 00:00:01 i #660 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.md.pdf } 00:00:01 d #661 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.md.pdf; result = 81214 } 00:00:01 i #662 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.md.html } 00:00:01 d #663 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.md.html; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.md.html; result = 72012 } 00:00:01 i #664 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.hangul.md } 00:00:01 d #665 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.hangul.md; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.hangul.md; result = 76071 } 00:00:01 d #666 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/spirituality/spirituality.mp4.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/spirituality/spirituality.mp4.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 v #667 > '2dfe570d538066c6a62ee8e5e4c05b67160b042c' 00:00:01 v #668 > bdb231b92700c577e134d2ae8d941fd84f388693 00:00:01 v #669 > 70e7431d7fa3cd9c92de39e0deffacdb7c5f7005 00:00:01 v #670 > 5a67a00b2a87bc4d1fd4b4a8a03cc9ac996871f8 00:00:01 v #671 > 064a22fe29f93a179c0a78a90e69c2837a9bef3b 00:00:01 v #672 > 'ffab8f376d7f53d106f540c2ac421f5555f14780' 00:00:01 v #673 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #674 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/korean.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/korean.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #675 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 v #676 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 v #677 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 i #678 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.hangul.md.epub } 00:00:01 i #679 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/math/math.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\math.hangul.md.epub } 00:00:01 i #680 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.hangul.md.epub } 00:00:01 d #681 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\math.hangul.md.epub; new_path = c:/home/git/vault/dist/data/math/math.hangul.md.epub; result = 6278 } 00:00:01 d #682 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.hangul.md.epub; new_path = c:/home/git/vault/dist/data/food/food.hangul.md.epub; result = 36753 } 00:00:01 d #682 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.hangul.md.epub; new_path = c:/home/git/vault/dist/data/ai/chatgpt.hangul.md.epub; result = 21991 } 00:00:01 v #684 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 i #685 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/math/math.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\math.hangul.md.pdf } 00:00:01 i #686 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.hangul.md.pdf } 00:00:01 i #687 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.hangul.md.pdf } 00:00:01 d #688 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\math.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/math/math.hangul.md.pdf; result = 7355 } 00:00:01 d #689 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/ai/chatgpt.hangul.md.pdf; result = 26438 } 00:00:01 d #690 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/food/food.hangul.md.pdf; result = 63383 } 00:00:01 i #690 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/math/math.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\math.hangul.md.html } 00:00:01 i #692 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.hangul.md.html } 00:00:01 i #693 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.hangul.md.html } 00:00:01 d #694 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\math.hangul.md.html; new_path = c:/home/git/vault/dist/data/math/math.hangul.md.html; result = 12268 } 00:00:01 v #695 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 i #696 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/math/math.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\math.md.epub } 00:00:01 d #697 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.hangul.md.html; new_path = c:/home/git/vault/dist/data/ai/chatgpt.hangul.md.html; result = 87531 } 00:00:01 d #698 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.hangul.md.html; new_path = c:/home/git/vault/dist/data/food/food.hangul.md.html; result = 174783 } 00:00:01 i #699 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.md.epub } 00:00:01 i #700 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.md.epub } 00:00:01 d #701 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 d #702 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\math.md.epub; new_path = c:/home/git/vault/dist/data/math/math.md.epub; result = 6065 } 00:00:01 d #703 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.md.epub; new_path = c:/home/git/vault/dist/data/ai/chatgpt.md.epub; result = 19733 } 00:00:01 i #704 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/math/math.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\math.md.pdf } 00:00:01 d #705 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.md.epub; new_path = c:/home/git/vault/dist/data/food/food.md.epub; result = 33010 } 00:00:01 i #706 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.md.pdf } 00:00:01 i #707 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.md.pdf } 00:00:01 d #708 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\math.md.pdf; new_path = c:/home/git/vault/dist/data/math/math.md.pdf; result = 14947 } 00:00:01 i #709 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.hangul.md.epub } 00:00:01 d #710 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.md.pdf; new_path = c:/home/git/vault/dist/data/ai/chatgpt.md.pdf; result = 79304 } 00:00:01 i #711 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/math/math.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\math.md.html } 00:00:01 i #712 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.md.html } 00:00:01 d #713 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.hangul.md.epub; result = 5697 } 00:00:01 d #714 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\math.md.html; new_path = c:/home/git/vault/dist/data/math/math.md.html; result = 11558 } 00:00:01 d #715 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.md.pdf; new_path = c:/home/git/vault/dist/data/food/food.md.pdf; result = 135025 } 00:00:01 i #716 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/math/math.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\math.hangul.md } 00:00:01 i #716 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.hangul.md.pdf } 00:00:01 d #719 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.md.html; new_path = c:/home/git/vault/dist/data/ai/chatgpt.md.html; result = 65906 } 00:00:01 i #716 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.md.html } 00:00:01 i #720 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/chatgpt.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.hangul.md } 00:00:01 d #721 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.hangul.md.pdf; result = 3988 } 00:00:01 d #722 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\math.hangul.md; new_path = c:/home/git/vault/dist/data/math/math.hangul.md; result = 2232 } 00:00:01 i #723 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.hangul.md.html } 00:00:01 d #724 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.md.html; new_path = c:/home/git/vault/dist/data/food/food.md.html; result = 128885 } 00:00:01 i #725 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.hangul.md } 00:00:01 d #726 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chatgpt.hangul.md; new_path = c:/home/git/vault/dist/data/ai/chatgpt.hangul.md; result = 67428 } 00:00:01 d #727 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.hangul.md.html; result = 10327 } 00:00:01 i #728 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.md.epub } 00:00:01 d #729 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.hangul.md; new_path = c:/home/git/vault/dist/data/food/food.hangul.md; result = 127583 } 00:00:01 d #730 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.md.epub; new_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.md.epub; result = 5557 } 00:00:01 i #731 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.md.pdf } 00:00:01 d #732 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.md.pdf; result = 7796 } 00:00:01 d #732 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/mercadolivre/mercadolivre.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/mercadolivre/mercadolivre.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 i #734 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.md.html } 00:00:01 d #735 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/ai/gpt3.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/ai/gpt3.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #736 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.md.html; new_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.md.html; result = 10142 } 00:00:01 i #737 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.hangul.md } 00:00:01 d #738 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/food/food.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/food/food.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #739 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\workflow.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/workflow/workflow.mp3.hangul.md; result = 402 } 00:00:01 d #740 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/writing/writing.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/writing/writing.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 v #741 > d6e3efa4eceeb79061d0e8a8d516036f770d4691 00:00:01 v #742 > 'c4624204251d68c706be6da67cea892f5bfeead7' 00:00:01 v #743 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 v #744 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 i #745 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/warez/warez.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.hangul.md.epub } 00:00:01 d #746 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/spirituality/spirituality.mp4.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/spirituality/spirituality.mp4.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 d #747 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/warez/warez.html.hangul.md.epub; result = 9974 } 00:00:01 i #748 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/warez/warez.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.hangul.md.pdf } 00:00:01 d #749 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/warez/warez.html.hangul.md.pdf; result = 14235 } 00:00:01 i #750 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/warez/warez.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.hangul.md.html } 00:00:01 d #751 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/warez/warez.html.hangul.md.html; result = 30230 } 00:00:01 i #752 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/warez/warez.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.md.epub } 00:00:01 v #753 > ffab8f376d7f53d106f540c2ac421f5555f14780 00:00:01 d #754 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.md.epub; new_path = c:/home/git/vault/dist/data/warez/warez.html.md.epub; result = 9230 } 00:00:01 i #755 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/warez/warez.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.md.pdf } 00:00:01 d #756 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.md.pdf; new_path = c:/home/git/vault/dist/data/warez/warez.html.md.pdf; result = 28650 } 00:00:01 i #757 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/warez/warez.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.md.html } 00:00:01 v #758 > 'd05c5d0f35097a6a85d45b60ebf092ab80c163c8' 00:00:01 v #758 > 2dfe570d538066c6a62ee8e5e4c05b67160b042c 00:00:01 d #760 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.md.html; new_path = c:/home/git/vault/dist/data/warez/warez.html.md.html; result = 25159 } 00:00:01 v #761 > '941beea1483213ff0ffe70d5c32f391923b16030' 00:00:01 i #762 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/warez/warez.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.hangul.md } 00:00:01 v #763 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 v #764 > 'a929a5a405afe3ec45d53978c7f1a3a6ebb78795' 00:00:01 d #765 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\warez.html.hangul.md; new_path = c:/home/git/vault/dist/data/warez/warez.html.hangul.md; result = 15005 } 00:00:01 i #766 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.hangul.md.epub } 00:00:01 d #767 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.hangul.md.epub; result = 12693 } 00:00:01 i #768 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.hangul.md.pdf } 00:00:01 d #769 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/weather/weather.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/weather/weather.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #770 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.hangul.md.pdf; result = 13093 } 00:00:01 i #771 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.hangul.md.html } 00:00:01 v #772 > 'a1f263813735775e0636a8b7a19d85259cbbbc8f' 00:00:01 d #773 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.hangul.md.html; result = 33732 } 00:00:01 i #774 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.md.epub } 00:00:01 d #775 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.md.epub; result = 11606 } 00:00:01 i #776 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.md.pdf } 00:00:01 d #777 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.md.pdf; result = 45640 } 00:00:01 i #778 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.md.html } 00:00:01 d #779 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.md.html; result = 26660 } 00:00:01 i #780 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.hangul.md } 00:00:01 v #781 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 v #781 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #783 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cv_pt-br.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/work/cv_pt-br.fc1943s.hangul.md; result = 20859 } 00:00:01 v #784 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #785 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/ai/gpt3.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/ai/gpt3.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 i #786 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.hangul.md.epub } 00:00:01 d #787 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/work/work.fc1943s.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/work/work.fc1943s.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #788 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 d #789 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.hangul.md.epub; result = 224165 } 00:00:01 i #790 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.hangul.md.pdf } 00:00:01 d #791 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.hangul.md.pdf; result = 296445 } 00:00:01 i #792 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.hangul.md.html } 00:00:01 v #793 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 v #794 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #795 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/food/food.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/food/food.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 d #796 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/writing/writing.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/writing/writing.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 d #797 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.hangul.md.html; result = 1132691 } 00:00:01 i #798 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.md.epub } 00:00:01 d #799 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.md.epub; result = 207001 } 00:00:01 i #800 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.md.pdf } 00:00:01 d #801 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.md.pdf; result = 738483 } 00:00:01 i #802 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.md.html } 00:00:01 d #803 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.md.html; result = 823639 } 00:00:01 i #804 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.hangul.md } 00:00:01 d #805 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/korean.hangul.md; result = 976987 } 00:00:01 d #806 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/korean.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/korean.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 v #807 > c4624204251d68c706be6da67cea892f5bfeead7 00:00:01 v #808 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 i #809 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.hangul.md.epub } 00:00:01 v #810 > 'c0dcdb33d63bcaff0a2b877d49653abc333d11ed' 00:00:01 d #811 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.hangul.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.hangul.md.epub; result = 5778 } 00:00:01 i #812 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.hangul.md.pdf } 00:00:01 v #813 > d05c5d0f35097a6a85d45b60ebf092ab80c163c8 00:00:01 d #814 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.hangul.md.pdf; result = 5975 } 00:00:01 i #815 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.hangul.md.html } 00:00:01 d #816 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.hangul.md.html; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.hangul.md.html; result = 11198 } 00:00:01 i #817 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.md.epub } 00:00:01 d #818 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.md.epub; result = 5630 } 00:00:01 i #819 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.md.pdf } 00:00:01 d #820 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.md.pdf; result = 12974 } 00:00:01 v #821 > a929a5a405afe3ec45d53978c7f1a3a6ebb78795 00:00:01 i #822 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.md.html } 00:00:01 d #823 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.md.html; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.md.html; result = 10750 } 00:00:01 i #824 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.hangul.md } 00:00:01 d #825 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.mp4.hangul.md; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.mp4.hangul.md; result = 1050 } 00:00:01 d #826 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/spirituality/spirituality.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/spirituality/spirituality.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 v #827 > 941beea1483213ff0ffe70d5c32f391923b16030 00:00:01 v #828 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 v #829 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 d #830 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/weather/weather.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/weather/weather.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #831 > a1f263813735775e0636a8b7a19d85259cbbbc8f 00:00:01 i #832 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.hangul.md.epub } 00:00:01 d #833 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.hangul.md.epub; result = 5512 } 00:00:01 i #834 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.hangul.md.pdf } 00:00:01 v #835 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 d #836 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.hangul.md.pdf; result = 3756 } 00:00:01 i #837 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.hangul.md.html } 00:00:01 v #838 > '23887617bd91a3849e5506af095bf349436acb0e' 00:00:01 d #839 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.hangul.md.html; result = 10092 } 00:00:01 i #840 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.md.epub } 00:00:01 i #841 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.hangul.md.epub } 00:00:01 d #842 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.md.epub; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.md.epub; result = 5443 } 00:00:01 i #843 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.md.pdf } 00:00:01 d #844 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/food/food.mp3.hangul.md.epub; result = 5607 } 00:00:01 d #845 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.md.pdf; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.md.pdf; result = 5929 } 00:00:01 i #846 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.md.html } 00:00:01 i #847 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.hangul.md.pdf } 00:00:01 d #848 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.md.html; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.md.html; result = 10060 } 00:00:01 d #849 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/food/food.mp3.hangul.md.pdf; result = 3726 } 00:00:01 i #850 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.hangul.md } 00:00:01 i #851 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.hangul.md.html } 00:00:01 d #852 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.html.hangul.md; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.html.hangul.md; result = 125 } 00:00:01 d #853 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/food/food.mp3.hangul.md.html; result = 10197 } 00:00:01 i #854 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.md.epub } 00:00:01 v #855 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 d #856 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.md.epub; new_path = c:/home/git/vault/dist/data/food/food.mp3.md.epub; result = 5493 } 00:00:01 i #857 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.md.pdf } 00:00:01 d #858 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/mercadolivre/mercadolivre.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/mercadolivre/mercadolivre.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #859 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/food/food.mp3.md.pdf; result = 6917 } 00:00:01 i #860 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.md.html } 00:00:01 i #860 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/gpt3.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.hangul.md.epub } 00:00:01 v #862 > '12b0a770aa67947704dc6cd7888ba8ca1df39a61' 00:00:01 d #863 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.md.html; new_path = c:/home/git/vault/dist/data/food/food.mp3.md.html; result = 10055 } 00:00:01 d #864 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/ai/gpt3.html.hangul.md.epub; result = 5733 } 00:00:01 i #865 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/gpt3.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.hangul.md.pdf } 00:00:01 i #866 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/food/food.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.hangul.md } 00:00:01 v #865 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:01 d #868 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\food.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/food/food.mp3.hangul.md; result = 273 } 00:00:01 d #868 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/ai/gpt3.html.hangul.md.pdf; result = 4899 } 00:00:01 i #870 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/gpt3.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.hangul.md.html } 00:00:01 d #871 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/ai/gpt3.html.hangul.md.html; result = 11175 } 00:00:01 i #872 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/gpt3.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.md.epub } 00:00:01 i #873 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.hangul.md.epub } 00:00:01 d #874 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/writing/writing.html.hangul.md.epub; result = 5533 } 00:00:01 d #874 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.md.epub; new_path = c:/home/git/vault/dist/data/ai/gpt3.html.md.epub; result = 5588 } 00:00:01 i #876 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/gpt3.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.md.pdf } 00:00:01 i #877 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.hangul.md.pdf } 00:00:01 d #878 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.md.pdf; new_path = c:/home/git/vault/dist/data/ai/gpt3.html.md.pdf; result = 7458 } 00:00:01 d #879 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/gamedev/gamedev.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/gamedev/gamedev.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #880 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/writing/writing.html.hangul.md.pdf; result = 3980 } 00:00:01 i #881 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/gpt3.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.md.html } 00:00:01 i #882 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.hangul.md.html } 00:00:01 d #883 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.md.html; new_path = c:/home/git/vault/dist/data/ai/gpt3.html.md.html; result = 10887 } 00:00:01 d #884 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/writing/writing.html.hangul.md.html; result = 10310 } 00:00:01 i #884 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/gpt3.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.hangul.md } 00:00:01 i #886 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.md.epub } 00:00:01 v #887 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #888 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gpt3.html.hangul.md; new_path = c:/home/git/vault/dist/data/ai/gpt3.html.hangul.md; result = 941 } 00:00:01 d #889 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.md.epub; new_path = c:/home/git/vault/dist/data/writing/writing.html.md.epub; result = 5459 } 00:00:01 i #890 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.md.pdf } 00:00:01 d #891 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.md.pdf; new_path = c:/home/git/vault/dist/data/writing/writing.html.md.pdf; result = 6044 } 00:00:01 i #892 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.md.html } 00:00:01 d #893 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/work/work.fc1943s.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/work/work.fc1943s.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 d #894 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/ai/rhyme 6.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/ai/rhyme 6.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 d #895 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.md.html; new_path = c:/home/git/vault/dist/data/writing/writing.html.md.html; result = 10241 } 00:00:01 i #896 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.hangul.md } 00:00:01 d #897 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.html.hangul.md; new_path = c:/home/git/vault/dist/data/writing/writing.html.hangul.md; result = 254 } 00:00:01 d #898 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/writing/writing.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/writing/writing.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:01 v #899 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:01 d #900 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/korean.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/korean.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:01 v #901 > c0dcdb33d63bcaff0a2b877d49653abc333d11ed 00:00:02 v #902 > '685814244b3cd01129b7add79b090cdfdd86b989' 00:00:02 v #903 > 'f17f49a270365e8c39076003cf9650004458b689' 00:00:02 v #904 > 'c0cfc32ae13aa63faf689421c4f9688e7dd36e97' 00:00:02 v #905 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #906 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #907 > 23887617bd91a3849e5506af095bf349436acb0e 00:00:02 v #908 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 v #909 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 v #910 > 12b0a770aa67947704dc6cd7888ba8ca1df39a61 00:00:02 v #911 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 i #912 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.hangul.md.epub } 00:00:02 d #913 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/spirituality/spirituality.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/spirituality/spirituality.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 d #914 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/gamedev/gamedev.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/gamedev/gamedev.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 d #915 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/weather/weather.html.hangul.md.epub; result = 6345 } 00:00:02 i #916 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.hangul.md.pdf } 00:00:02 d #917 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/weather/weather.html.hangul.md.pdf; result = 7389 } 00:00:02 i #918 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.hangul.md.html } 00:00:02 d #919 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/weather/weather.html.hangul.md.html; result = 15692 } 00:00:02 i #920 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.md.epub } 00:00:02 d #921 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.md.epub; new_path = c:/home/git/vault/dist/data/weather/weather.html.md.epub; result = 6091 } 00:00:02 i #922 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.md.pdf } 00:00:02 d #923 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.md.pdf; new_path = c:/home/git/vault/dist/data/weather/weather.html.md.pdf; result = 11345 } 00:00:02 i #924 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.md.html } 00:00:02 d #925 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.md.html; new_path = c:/home/git/vault/dist/data/weather/weather.html.md.html; result = 14475 } 00:00:02 v #926 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #927 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.hangul.md } 00:00:02 d #928 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.html.hangul.md; new_path = c:/home/git/vault/dist/data/weather/weather.html.hangul.md; result = 4193 } 00:00:02 v #929 > 'e80cfd7265fe2b552d3a6b9a6779d3be6747ce96' 00:00:02 v #930 > '18f02f65ac00e3313a7248eff4d1f1ba41a1ee08' 00:00:02 v #931 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #932 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.hangul.md.epub } 00:00:02 d #933 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/weather/weather.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/weather/weather.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 d #934 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.hangul.md.epub; result = 5704 } 00:00:02 i #935 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.hangul.md.pdf } 00:00:02 d #936 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.hangul.md.pdf; result = 4821 } 00:00:02 i #937 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.hangul.md.html } 00:00:02 d #938 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.hangul.md.html; result = 10407 } 00:00:02 i #939 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.md.epub } 00:00:02 d #940 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.md.epub; new_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.md.epub; result = 5569 } 00:00:02 i #941 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.md.pdf } 00:00:02 d #942 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.md.pdf; result = 7732 } 00:00:02 i #943 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.hangul.md.epub } 00:00:02 i #943 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.md.html } 00:00:02 d #945 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.mp3.hangul.md.epub; result = 5981 } 00:00:02 d #946 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.md.html; new_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.md.html; result = 10236 } 00:00:02 i #947 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.hangul.md } 00:00:02 d #948 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\work.fc1943s.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/work/work.fc1943s.pdf.hangul.md; result = 440 } 00:00:02 i #949 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.hangul.md.pdf } 00:00:02 d #950 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.mp3.hangul.md.pdf; result = 4747 } 00:00:02 i #951 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.hangul.md.html } 00:00:02 d #952 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.mp3.hangul.md.html; result = 11902 } 00:00:02 i #953 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.md.epub } 00:00:02 d #954 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/workflow/tasks.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/workflow/tasks.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 d #955 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.mp3.md.epub; result = 5786 } 00:00:02 i #956 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.md.pdf } 00:00:02 d #957 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.mp3.md.pdf; result = 10213 } 00:00:02 i #958 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.md.html } 00:00:02 v #959 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #960 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.mp3.md.html; result = 11092 } 00:00:02 v #961 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 i #962 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.hangul.md } 00:00:02 d #963 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/ai/rhyme 6.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/ai/rhyme 6.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 d #964 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/korean.mp3.hangul.md; result = 1840 } 00:00:02 d #965 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/writing/writing.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/writing/writing.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 d #966 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/korean.mp4.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/korean.mp4.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #967 > f17f49a270365e8c39076003cf9650004458b689 00:00:02 v #968 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 v #969 > 685814244b3cd01129b7add79b090cdfdd86b989 00:00:02 i #970 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.hangul.md.epub } 00:00:02 d #971 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.hangul.md.epub; result = 5515 } 00:00:02 i #972 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.hangul.md.pdf } 00:00:02 d #973 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.hangul.md.pdf; result = 4380 } 00:00:02 i #974 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.hangul.md.html } 00:00:02 d #975 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.hangul.md.html; result = 10091 } 00:00:02 i #976 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.md.epub } 00:00:02 d #977 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.md.epub; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.md.epub; result = 5452 } 00:00:02 i #978 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.md.pdf } 00:00:02 d #979 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.md.pdf; result = 5996 } 00:00:02 v #980 > c0cfc32ae13aa63faf689421c4f9688e7dd36e97 00:00:02 i #981 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.md.html } 00:00:02 v #982 > '6147bb686841492df1590912b0792a2e9ba8c22c' 00:00:02 d #983 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.md.html; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.md.html; result = 10060 } 00:00:02 i #984 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.hangul.md } 00:00:02 d #985 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mercadolivre.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/mercadolivre/mercadolivre.i574n.hangul.md; result = 111 } 00:00:02 v #986 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #987 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.hangul.md.epub } 00:00:02 d #988 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.hangul.md.epub; result = 6272 } 00:00:02 d #989 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/microsoft/microsoft.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/microsoft/microsoft.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 i #990 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.hangul.md.pdf } 00:00:02 d #991 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.hangul.md.pdf; result = 5909 } 00:00:02 i #992 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.hangul.md.html } 00:00:02 d #993 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.hangul.md.html; result = 12326 } 00:00:02 i #994 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.md.epub } 00:00:02 v #995 > '22cc2919cdbd8e95094bb594f901a066bcc97026' 00:00:02 d #996 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.md.epub; result = 5992 } 00:00:02 i #997 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.md.pdf } 00:00:02 d #998 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.md.pdf; result = 10691 } 00:00:02 v #999 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #999 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.md.html } 00:00:02 d #1001 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.md.html; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.md.html; result = 11587 } 00:00:02 i #1002 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.hangul.md } 00:00:02 v #1003 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1004 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spirituality.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/spirituality/spirituality.pdf.hangul.md; result = 2091 } 00:00:02 i #1005 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.hangul.md.epub } 00:00:02 d #1006 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.hangul.md.epub; result = 5719 } 00:00:02 i #1007 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.hangul.md.pdf } 00:00:02 d #1008 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.hangul.md.pdf; result = 4587 } 00:00:02 d #1009 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/weather/weather.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/weather/weather.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 i #1009 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.hangul.md.html } 00:00:02 d #1011 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.hangul.md.html; result = 10430 } 00:00:02 i #1012 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.md.epub } 00:00:02 v #1013 > '42d41c00c1027498867bb79e25d63be757ea1a27' 00:00:02 d #1014 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/spirituality/the-book-of-innocence_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/spirituality/the-book-of-innocence_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 d #1015 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.md.epub; new_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.md.epub; result = 5577 } 00:00:02 i #1016 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.md.pdf } 00:00:02 v #1017 > 18f02f65ac00e3313a7248eff4d1f1ba41a1ee08 00:00:02 d #1018 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.md.pdf; result = 9916 } 00:00:02 i #1019 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.md.html } 00:00:02 d #1020 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.md.html; new_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.md.html; result = 10254 } 00:00:02 i #1021 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.hangul.md } 00:00:02 d #1022 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gamedev.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/gamedev/gamedev.pdf.hangul.md; result = 443 } 00:00:02 v #1023 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 v #1024 > e80cfd7265fe2b552d3a6b9a6779d3be6747ce96 00:00:02 d #1025 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/workflow/tasks.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/workflow/tasks.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 d #1026 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/gaming/gaming.7z.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/gaming/gaming.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1027 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1028 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/korean.mp4.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/korean.mp4.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1029 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #1030 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.hangul.md.epub } 00:00:02 d #1031 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.hangul.md.epub; new_path = c:/home/git/vault/dist/data/writing/writing.hangul.md.epub; result = 6409 } 00:00:02 i #1032 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.hangul.md.pdf } 00:00:02 d #1033 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/writing/writing.hangul.md.pdf; result = 5167 } 00:00:02 i #1034 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.hangul.md.html } 00:00:02 d #1035 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.hangul.md.html; new_path = c:/home/git/vault/dist/data/writing/writing.hangul.md.html; result = 12384 } 00:00:02 i #1036 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.md.epub } 00:00:02 v #1037 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 d #1038 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.md.epub; new_path = c:/home/git/vault/dist/data/writing/writing.md.epub; result = 6116 } 00:00:02 i #1039 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.md.pdf } 00:00:02 d #1040 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.md.pdf; new_path = c:/home/git/vault/dist/data/writing/writing.md.pdf; result = 14650 } 00:00:02 i #1041 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.md.html } 00:00:02 d #1042 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.md.html; new_path = c:/home/git/vault/dist/data/writing/writing.md.html; result = 11538 } 00:00:02 i #1043 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/writing/writing.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\writing.hangul.md } 00:00:02 i #1044 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/rhyme 6.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.hangul.md.epub } 00:00:02 d #1045 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.hangul.md.epub; new_path = c:/home/git/vault/dist/data/ai/rhyme 6.hangul.md.epub; result = 8994 } 00:00:02 i #1046 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/rhyme 6.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.hangul.md.pdf } 00:00:02 d #1047 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\writing.hangul.md; new_path = c:/home/git/vault/dist/data/writing/writing.hangul.md; result = 2298 } 00:00:02 d #1048 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/ai/rhyme 6.hangul.md.pdf; result = 5189 } 00:00:02 i #1049 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/rhyme 6.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.hangul.md.html } 00:00:02 d #1050 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/README.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/README.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 d #1051 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.hangul.md.html; new_path = c:/home/git/vault/dist/data/ai/rhyme 6.hangul.md.html; result = 18745 } 00:00:02 i #1052 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/rhyme 6.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.md.epub } 00:00:02 d #1053 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.md.epub; new_path = c:/home/git/vault/dist/data/ai/rhyme 6.md.epub; result = 8319 } 00:00:02 i #1054 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/rhyme 6.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.md.pdf } 00:00:02 d #1055 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.md.pdf; new_path = c:/home/git/vault/dist/data/ai/rhyme 6.md.pdf; result = 15308 } 00:00:02 i #1056 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/rhyme 6.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.md.html } 00:00:02 d #1057 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.md.html; new_path = c:/home/git/vault/dist/data/ai/rhyme 6.md.html; result = 16132 } 00:00:02 i #1058 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ai/rhyme 6.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.hangul.md } 00:00:02 d #1059 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rhyme 6.hangul.md; new_path = c:/home/git/vault/dist/data/ai/rhyme 6.hangul.md; result = 8043 } 00:00:02 d #1060 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/apple/apple.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/apple/apple.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1061 > '146508acc29359c653f49c8cd52ca4d5f26eee02' 00:00:02 v #1062 > 6147bb686841492df1590912b0792a2e9ba8c22c 00:00:02 v #1063 > 'fe409a2db2f6562982abe31d4e36f94ac07f70cc' 00:00:02 v #1064 > '3c88c85e7787363faf664d56d7b40a12843fd18a' 00:00:02 v #1065 > 22cc2919cdbd8e95094bb594f901a066bcc97026 00:00:02 v #1066 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1067 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/microsoft/microsoft.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/microsoft/microsoft.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1068 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 v #1069 > 42d41c00c1027498867bb79e25d63be757ea1a27 00:00:02 i #1070 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.hangul.md.epub } 00:00:02 d #1071 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.hangul.md.epub; new_path = c:/home/git/vault/dist/data/weather/weather.hangul.md.epub; result = 9402 } 00:00:02 i #1072 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.hangul.md.pdf } 00:00:02 d #1073 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/weather/weather.hangul.md.pdf; result = 11855 } 00:00:02 i #1074 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.hangul.md.html } 00:00:02 d #1075 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.hangul.md.html; new_path = c:/home/git/vault/dist/data/weather/weather.hangul.md.html; result = 33105 } 00:00:02 v #1076 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 i #1077 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.md.epub } 00:00:02 d #1078 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.md.epub; new_path = c:/home/git/vault/dist/data/weather/weather.md.epub; result = 8779 } 00:00:02 i #1079 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.md.pdf } 00:00:02 v #1080 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 d #1081 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.md.pdf; new_path = c:/home/git/vault/dist/data/weather/weather.md.pdf; result = 28272 } 00:00:02 i #1082 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.md.html } 00:00:02 v #1083 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1084 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/gaming/gaming.7z.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/gaming/gaming.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 d #1085 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.md.html; new_path = c:/home/git/vault/dist/data/weather/weather.md.html; result = 27108 } 00:00:02 i #1086 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/weather/weather.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\weather.hangul.md } 00:00:02 i #1086 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/tasks.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tasks.hangul.md.epub } 00:00:02 d #1088 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\weather.hangul.md; new_path = c:/home/git/vault/dist/data/weather/weather.hangul.md; result = 17225 } 00:00:02 d #1089 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tasks.hangul.md.epub; new_path = c:/home/git/vault/dist/data/workflow/tasks.hangul.md.epub; result = 6545 } 00:00:02 i #1090 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/tasks.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tasks.hangul.md.pdf } 00:00:02 d #1091 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tasks.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/tasks.hangul.md.pdf; result = 7490 } 00:00:02 d #1092 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 i #1093 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/tasks.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tasks.hangul.md.html } 00:00:02 d #1094 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tasks.hangul.md.html; new_path = c:/home/git/vault/dist/data/workflow/tasks.hangul.md.html; result = 14784 } 00:00:02 v #1095 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 d #1096 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/near.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/near.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 i #1097 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/tasks.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tasks.md.epub } 00:00:02 d #1098 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tasks.md.epub; new_path = c:/home/git/vault/dist/data/workflow/tasks.md.epub; result = 6301 } 00:00:02 i #1099 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/tasks.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tasks.md.pdf } 00:00:02 i #1100 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp4.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.hangul.md.epub } 00:00:02 d #1101 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tasks.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/tasks.md.pdf; result = 15525 } 00:00:02 i #1102 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/tasks.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tasks.md.html } 00:00:02 d #1103 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.mp4.hangul.md.epub; result = 5788 } 00:00:02 d #1104 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tasks.md.html; new_path = c:/home/git/vault/dist/data/workflow/tasks.md.html; result = 13715 } 00:00:02 i #1105 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp4.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.hangul.md.pdf } 00:00:02 i #1106 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/tasks.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tasks.hangul.md } 00:00:02 d #1107 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.mp4.hangul.md.pdf; result = 6422 } 00:00:02 d #1108 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tasks.hangul.md; new_path = c:/home/git/vault/dist/data/workflow/tasks.hangul.md; result = 3399 } 00:00:02 i #1109 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp4.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.hangul.md.html } 00:00:02 d #1110 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.mp4.hangul.md.html; result = 10862 } 00:00:02 i #1111 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp4.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.md.epub } 00:00:02 d #1112 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/workflow/test.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/workflow/test.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 d #1113 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.mp4.md.epub; result = 5638 } 00:00:02 i #1114 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp4.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.md.pdf } 00:00:02 d #1115 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.mp4.md.pdf; result = 14136 } 00:00:02 i #1116 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp4.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.md.html } 00:00:02 d #1117 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.mp4.md.html; result = 10545 } 00:00:02 i #1118 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.mp4.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.hangul.md } 00:00:02 d #1119 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.mp4.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/korean.mp4.hangul.md; result = 849 } 00:00:02 v #1120 > '41bfc888bf58bff06904fa5ae4c5678f3363965d' 00:00:02 d #1121 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/korean.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/korean.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1122 > '32e36a4c8b29b54ba54d7b9ad799ccf8af4b8708' 00:00:02 v #1123 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1124 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/README.md"]; options = { command = git hash-object "c:/home/git/vault/dist/README.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1125 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1126 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/apple/apple.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/apple/apple.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1127 > 146508acc29359c653f49c8cd52ca4d5f26eee02 00:00:02 v #1128 > fe409a2db2f6562982abe31d4e36f94ac07f70cc 00:00:02 v #1129 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 v #1130 > 3c88c85e7787363faf664d56d7b40a12843fd18a 00:00:02 i #1131 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.hangul.md.epub } 00:00:02 v #1132 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 d #1133 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.hangul.md.epub; result = 5524 } 00:00:02 i #1134 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.hangul.md.pdf } 00:00:02 d #1135 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.hangul.md.pdf; result = 3759 } 00:00:02 i #1136 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.hangul.md.html } 00:00:02 v #1137 > 'e650f9e626339147c1809ea9782558c2717dfc3d' 00:00:02 i #1138 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gaming/gaming.7z.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.hangul.md.epub } 00:00:02 d #1139 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.hangul.md.html; result = 10105 } 00:00:02 i #1140 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.md.epub } 00:00:02 d #1141 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.hangul.md.epub; new_path = c:/home/git/vault/dist/data/gaming/gaming.7z.hangul.md.epub; result = 5566 } 00:00:02 i #1142 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gaming/gaming.7z.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.hangul.md.pdf } 00:00:02 d #1143 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.md.epub; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.md.epub; result = 5452 } 00:00:02 i #1144 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.md.pdf } 00:00:02 d #1145 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/gaming/gaming.7z.hangul.md.pdf; result = 3504 } 00:00:02 i #1146 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gaming/gaming.7z.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.hangul.md.html } 00:00:02 d #1147 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.md.pdf; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.md.pdf; result = 5945 } 00:00:02 i #1148 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.md.html } 00:00:02 d #1149 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.hangul.md.html; new_path = c:/home/git/vault/dist/data/gaming/gaming.7z.hangul.md.html; result = 10100 } 00:00:02 v #1150 > 'e6d9de7c036f23bcb7bdde8d98060b09ed696b52' 00:00:02 i #1151 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gaming/gaming.7z.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.md.epub } 00:00:02 d #1152 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.md.html; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.md.html; result = 10068 } 00:00:02 i #1153 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.hangul.md } 00:00:02 d #1154 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.md.epub; new_path = c:/home/git/vault/dist/data/gaming/gaming.7z.md.epub; result = 5476 } 00:00:02 i #1155 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gaming/gaming.7z.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.md.pdf } 00:00:02 d #1156 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.html.hangul.md; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.html.hangul.md; result = 138 } 00:00:02 d #1157 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.md.pdf; new_path = c:/home/git/vault/dist/data/gaming/gaming.7z.md.pdf; result = 7452 } 00:00:02 i #1158 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gaming/gaming.7z.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.md.html } 00:00:02 d #1159 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.md.html; new_path = c:/home/git/vault/dist/data/gaming/gaming.7z.md.html; result = 10137 } 00:00:02 i #1160 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/gaming/gaming.7z.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.hangul.md } 00:00:02 d #1161 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\gaming.7z.hangul.md; new_path = c:/home/git/vault/dist/data/gaming/gaming.7z.hangul.md; result = 196 } 00:00:02 d #1162 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/microsoft/microsoft.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/microsoft/microsoft.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1163 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #1164 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-innocence_pt-br.md.epub } 00:00:02 d #1165 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/git/git.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/git/git.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1166 > '0cc6d8990d1fe5ac8b9962d67abcc506613aec39' 00:00:02 v #1167 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1168 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-innocence_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.md.epub; result = 195380 } 00:00:02 i #1169 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-innocence_pt-br.md.pdf } 00:00:02 d #1170 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/near.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/near.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 d #1171 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-innocence_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.md.pdf; result = 711235 } 00:00:02 v #1172 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 i #1173 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-innocence_pt-br.md.html } 00:00:02 d #1174 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/workflow/test.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/workflow/test.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 d #1175 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-innocence_pt-br.md.html; new_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.md.html; result = 659840 } 00:00:02 i #1176 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-innocence_pt-br.hangul.md } 00:00:02 d #1177 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\the-book-of-innocence_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md; result = 905456 } 00:00:02 v #1178 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 v #1179 > 41bfc888bf58bff06904fa5ae4c5678f3363965d 00:00:02 d #1180 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/korean.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/korean.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 d #1181 runtime.execute_with_options / { file_name = crowbook; arguments = ["--verbose", "--to", "html", "--single", "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md", "--output", "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.html", "--set", "html.css.add", "' body { color: #e8e6e3; background-color: #202324; } a { color: #989693; } pre { background-color: #1b1b1b; padding: 10px; } '"]; options = { command = crowbook --verbose --to html --single "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md" --output "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.html" --set html.css.add \"' body { color: #e8e6e3; background-color: #202324; } a { color: #989693; } pre { background-color: #1b1b1b; padding: 10px; } '\" rendering.num_depth 6 rendering.highlight.theme \"Solarized (dark)\"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1182 > 32e36a4c8b29b54ba54d7b9ad799ccf8af4b8708 00:00:02 v #1183 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 v #1184 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #1185 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/README.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\README.hangul.md.epub } 00:00:02 i #1186 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.hangul.md.epub } 00:00:02 d #1187 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\README.hangul.md.epub; new_path = c:/home/git/vault/dist/README.hangul.md.epub; result = 6994 } 00:00:02 i #1188 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/README.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\README.hangul.md.pdf } 00:00:02 d #1189 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/apple/apple.html.hangul.md.epub; result = 5514 } 00:00:02 i #1190 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.hangul.md.pdf } 00:00:02 d #1191 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\README.hangul.md.pdf; new_path = c:/home/git/vault/dist/README.hangul.md.pdf; result = 8628 } 00:00:02 i #1192 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/README.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\README.hangul.md.html } 00:00:02 d #1193 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/apple/apple.html.hangul.md.pdf; result = 3754 } 00:00:02 i #1194 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.hangul.md.html } 00:00:02 d #1195 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\README.hangul.md.html; new_path = c:/home/git/vault/dist/README.hangul.md.html; result = 16769 } 00:00:02 i #1196 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/README.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\README.md.epub } 00:00:02 d #1197 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/apple/apple.html.hangul.md.html; result = 10099 } 00:00:02 i #1198 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.md.epub } 00:00:02 d #1199 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\README.md.epub; new_path = c:/home/git/vault/dist/README.md.epub; result = 6759 } 00:00:02 d #1200 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.md.epub; new_path = c:/home/git/vault/dist/data/apple/apple.html.md.epub; result = 5445 } 00:00:02 i #1201 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/README.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\README.md.pdf } 00:00:02 i #1202 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.md.pdf } 00:00:02 d #1203 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.md.pdf; new_path = c:/home/git/vault/dist/data/apple/apple.html.md.pdf; result = 5928 } 00:00:02 d #1204 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\README.md.pdf; new_path = c:/home/git/vault/dist/README.md.pdf; result = 13802 } 00:00:02 i #1205 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.md.html } 00:00:02 i #1205 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/README.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\README.md.html } 00:00:02 v #1207 ! CROWBOOK 0.17.0 00:00:02 d #1208 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.md.html; new_path = c:/home/git/vault/dist/data/apple/apple.html.md.html; result = 10062 } 00:00:02 d #1209 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\README.md.html; new_path = c:/home/git/vault/dist/README.md.html; result = 16583 } 00:00:02 i #1210 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/README.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\README.hangul.md } 00:00:02 i #1210 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.hangul.md } 00:00:02 d #1212 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.html.hangul.md; new_path = c:/home/git/vault/dist/data/apple/apple.html.hangul.md; result = 132 } 00:00:02 d #1213 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\README.hangul.md; new_path = c:/home/git/vault/dist/README.hangul.md; result = 3850 } 00:00:02 d #1214 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/storage.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/storage.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 d #1214 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/apple/apple.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/apple/apple.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1216 > '9dff62934948131bfa2a14d61ea4e056cb9c4c15' 00:00:02 v #1217 > '1d96ec9b8172db5a5f0b1e515a843c9f7c3e2eb8' 00:00:02 v #1218 > e650f9e626339147c1809ea9782558c2717dfc3d 00:00:02 v #1219 > e6d9de7c036f23bcb7bdde8d98060b09ed696b52 00:00:02 v #1220 > 0cc6d8990d1fe5ac8b9962d67abcc506613aec39 00:00:02 v #1221 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 v #1222 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 d #1223 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/microsoft/microsoft.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/microsoft/microsoft.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1224 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 i #1225 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/near.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\near.html.hangul.md.epub } 00:00:02 d #1226 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\near.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/near.html.hangul.md.epub; result = 5579 } 00:00:02 i #1227 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/near.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\near.html.hangul.md.pdf } 00:00:02 d #1228 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/git/git.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/git/git.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 d #1229 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\near.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/near.html.hangul.md.pdf; result = 4244 } 00:00:02 i #1230 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/near.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\near.html.hangul.md.html } 00:00:02 v #1231 ! 10:54:06 [ERROR] crowbook::book: Inline YAML block could not set String("치틀리") to String("우 리브루 다 이노센시아"): Error converting BookOption: unrecognized key '치틀리' 00:00:02 d #1232 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\near.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/near.html.hangul.md.html; result = 10779 } 00:00:02 i #1233 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/near.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\near.html.md.epub } 00:00:02 v #1234 ! 10:54:06 [DEBUG] (1) crowbook::book: Attempting to generate html... 00:00:02 v #1235 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 d #1236 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\near.html.md.epub; new_path = c:/home/git/vault/dist/data/web3/near.html.md.epub; result = 5497 } 00:00:02 i #1237 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/near.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\near.html.md.pdf } 00:00:02 d #1238 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\near.html.md.pdf; new_path = c:/home/git/vault/dist/data/web3/near.html.md.pdf; result = 6571 } 00:00:02 i #1239 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/near.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\near.html.md.html } 00:00:02 i #1240 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/test.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\test.hangul.md.epub } 00:00:02 d #1241 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\near.html.md.html; new_path = c:/home/git/vault/dist/data/web3/near.html.md.html; result = 10627 } 00:00:02 i #1242 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/near.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\near.html.hangul.md } 00:00:02 d #1243 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\test.hangul.md.epub; new_path = c:/home/git/vault/dist/data/workflow/test.hangul.md.epub; result = 5936 } 00:00:02 i #1244 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/test.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\test.hangul.md.pdf } 00:00:02 d #1245 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\near.html.hangul.md; new_path = c:/home/git/vault/dist/data/web3/near.html.hangul.md; result = 545 } 00:00:02 v #1245 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 d #1247 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\test.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/test.hangul.md.pdf; result = 3053 } 00:00:02 i #1248 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/test.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\test.hangul.md.html } 00:00:02 d #1249 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\test.hangul.md.html; new_path = c:/home/git/vault/dist/data/workflow/test.hangul.md.html; result = 11432 } 00:00:02 i #1250 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/test.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\test.md.epub } 00:00:02 i #1251 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.hangul.md.epub } 00:00:02 d #1252 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\test.md.epub; new_path = c:/home/git/vault/dist/data/workflow/test.md.epub; result = 5400 } 00:00:02 d #1253 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/GirlOffGrid.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/GirlOffGrid.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 d #1254 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.pdf.hangul.md.epub; result = 5763 } 00:00:02 i #1255 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/test.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\test.md.pdf } 00:00:02 i #1256 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.hangul.md.pdf } 00:00:02 d #1257 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\test.md.pdf; new_path = c:/home/git/vault/dist/data/workflow/test.md.pdf; result = 856 } 00:00:02 d #1258 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.pdf.hangul.md.pdf; result = 5067 } 00:00:02 i #1259 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/test.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\test.md.html } 00:00:02 i #1260 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.hangul.md.html } 00:00:02 d #1261 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.pdf.hangul.md.html; result = 10506 } 00:00:02 d #1262 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\test.md.html; new_path = c:/home/git/vault/dist/data/workflow/test.md.html; result = 11432 } 00:00:02 i #1263 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.md.epub } 00:00:02 i #1264 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/workflow/test.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\test.hangul.md } 00:00:02 d #1265 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.pdf.md.epub; result = 5619 } 00:00:02 d #1266 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\test.hangul.md; new_path = c:/home/git/vault/dist/data/workflow/test.hangul.md; result = 1 } 00:00:02 i #1267 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.md.pdf } 00:00:02 d #1268 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.pdf.md.pdf; result = 8555 } 00:00:02 i #1269 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.md.html } 00:00:02 d #1270 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.pdf.md.html; result = 10326 } 00:00:02 i #1271 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.hangul.md } 00:00:02 d #1272 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/korean.pdf.hangul.md; result = 518 } 00:00:02 d #1273 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Stacy_x3.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Stacy_x3.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 d #1274 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/korean.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/korean.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1275 ! 10:54:06 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #콘테우두 or #콘테우두.md 00:00:02 v #1276 ! 10:54:06 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #인트로두상-프레젠사-이-세르 or #인트로두상-프레젠사-이-세르.md 00:00:02 v #1277 ! 10:54:06 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #파르치-이-이덴치다지 or #파르치-이-이덴치다지.md 00:00:02 v #1278 ! 10:54:06 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #1-이우-소-코녜시두 or #1-이우-소-코녜시두.md 00:00:02 v #1279 ! 10:54:06 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #2-메모리아 or #2-메모리아.md 00:00:02 v #1280 ! 10:54:06 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #3-아-베르다지-두-세르 or #3-아-베르다지-두-세르.md 00:00:02 v #1281 ! 10:54:06 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #4-헤콘실리아상 or #4-헤콘실리아상.md 00:00:02 v #1282 ! 10:54:06 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #파르치-이-이노센시아 or #파르치-이-이노센시아.md 00:00:02 v #1283 ! 10:54:06 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #5-알렝-두-페카두 or #5-알렝-두-페카두.md 00:00:02 v #1284 ! 10:54:06 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #6-웅-문두-헤노바두 or #6-웅-문두-헤노바두.md 00:00:02 v #1285 ! 10:54:06 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #7-멘치-베르다데이라 or #7-멘치-베르다데이라.md 00:00:02 v #1286 ! 10:54:06 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #이필로구 or #이필로구.md 00:00:02 v #1287 ! 10:54:06 [INFO] crowbook::book: Succesfully generated HTML (standalone page): data\spirituality\the-book-of-innocence_pt-br.hangul.md.html 00:00:02 v #1288 > 'cb0232045c36a04a06163a007ad562c73b568cbf' 00:00:02 v #1289 > 'c621e83d16716f578ef49a69593ad48d79b8d315' 00:00:02 v #1290 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 2238 } 00:00:02 w #1291 documents.crowbook / result contains ERROR / { exit_code = 0; output_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.html; result = CROWBOOK 0.17.0 10:54:06 [ERROR] crowbook::book: Inline YAML block could not set String("치틀리") to String("우 리브루 다 이노센시아"): Error converting BookOption: unrecognized key '치틀리' 10:54:06 [DEBUG] (1) crowbook::book: Attempting to generate html... 10:54:06 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #콘테우두 or #콘테우두.md 10:54:06 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #인트로두상-프레젠사-이-세르 or #인트로두상-프레젠사-이-세르.md 10:54:06 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #파르치-이-이덴치다지 or #파르치-이-이덴치다지.md 10:54:06 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #1-이우-소-코녜시두 or #1-이우-소-코녜시두.md 10:54:06 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #2-메모리아 or #2-메모리아.md 10:54:06 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #3-아-베르다지-두-세르 or #3-아-베르다지-두-세르.md 10:54:06 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #4-헤콘실리아상 or #4-헤콘실리아상.md 10:54:06 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #파르치-이-이노센시아 or #파르치-이-이노센시아.md 10:54:06 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #5-알렝-두-페카두 or #5-알렝-두-페카두.md 10:54:06 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #6-웅-문두-헤노바두 or #6-웅-문두-헤노바두.md 10:54:06 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #7-멘치-베르다데이라 or #7-멘치-베르다데이라.md 10:54:06 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #이필로구 or #이필로구.md 10:54:06 [INFO] crowbook::book: Succesfully generated HTML (standalone page): data\spirituality\the-book-of-innocence_pt-br.hangul.md.html } 00:00:02 v #1292 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 v #1293 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1294 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/apple/apple.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/apple/apple.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 d #1295 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/storage.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/storage.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 d #1296 runtime.execute_with_options / { file_name = crowbook; arguments = ["--verbose", "--to", "pdf", "--single", "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md", "--output", "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.pdf", "--set", "tex.paper.size", "a4paper", "tex.template.add", "\\pagenumbering{gobble}", "tex.template.add", "\\usepackage{polyglossia}", "tex.template.add", "\\setmainlanguage{korean}", "tex.template.add", "\\setmainfont{NanumGothicCoding}", "tex.font.size", "13", "rendering.num_depth", "6", "rendering.highlight.theme", "Solarized (dark)"]; options = { command = crowbook --verbose --to pdf --single "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md" --output "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.pdf" --set tex.paper.size a4paper tex.template.add "\pagenumbering{gobble}" tex.template.add "\usepackage{polyglossia}" tex.template.add "\setmainlanguage{korean}" tex.template.add "\setmainfont{NanumGothicCoding}" tex.font.size 13 rendering.num_depth 6 rendering.highlight.theme \"Solarized (dark)\"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1297 ! CROWBOOK 0.17.0 00:00:02 v #1298 > 9dff62934948131bfa2a14d61ea4e056cb9c4c15 00:00:02 v #1299 > 1d96ec9b8172db5a5f0b1e515a843c9f7c3e2eb8 00:00:02 v #1300 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #1301 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/git/git.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\git.hangul.md.epub } 00:00:02 d #1302 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\git.hangul.md.epub; new_path = c:/home/git/vault/dist/data/git/git.hangul.md.epub; result = 7594 } 00:00:02 i #1303 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/git/git.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\git.hangul.md.pdf } 00:00:02 v #1304 > 'f5e82445d251df9ddf5c77ec561ad32ff1304781' 00:00:02 v #1305 > '58ba8dcbf16a6c08e6db4a9db3619c119f00757d' 00:00:02 d #1306 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\git.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/git/git.hangul.md.pdf; result = 6941 } 00:00:02 v #1307 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #1308 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/git/git.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\git.hangul.md.html } 00:00:02 d #1309 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\git.hangul.md.html; new_path = c:/home/git/vault/dist/data/git/git.hangul.md.html; result = 22492 } 00:00:02 i #1310 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/git/git.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\git.md.epub } 00:00:02 v #1311 > 'cf4ab3213857e7332c4aa6d4298bceed4722422c' 00:00:02 d #1312 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\git.md.epub; new_path = c:/home/git/vault/dist/data/git/git.md.epub; result = 7129 } 00:00:02 i #1313 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/git/git.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\git.md.pdf } 00:00:02 i #1314 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.hangul.md.epub } 00:00:02 d #1315 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\git.md.pdf; new_path = c:/home/git/vault/dist/data/git/git.md.pdf; result = 17923 } 00:00:02 i #1316 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/git/git.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\git.md.html } 00:00:02 d #1317 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.hangul.md.epub; result = 5503 } 00:00:02 i #1318 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.hangul.md.pdf } 00:00:02 d #1319 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\git.md.html; new_path = c:/home/git/vault/dist/data/git/git.md.html; result = 19663 } 00:00:02 i #1320 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/git/git.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\git.hangul.md } 00:00:02 d #1321 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.hangul.md.pdf; result = 4374 } 00:00:02 i #1322 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.hangul.md.html } 00:00:02 d #1323 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\git.hangul.md; new_path = c:/home/git/vault/dist/data/git/git.hangul.md; result = 7654 } 00:00:02 d #1324 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.hangul.md.html; result = 10076 } 00:00:02 i #1325 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.md.epub } 00:00:02 d #1326 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.md.epub; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.md.epub; result = 5444 } 00:00:02 i #1327 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.md.pdf } 00:00:02 d #1328 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/github/github.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/github/github.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 d #1329 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.md.pdf; result = 5983 } 00:00:02 i #1330 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.md.html } 00:00:02 v #1331 ! 10:54:07 [ERROR] crowbook::book: Inline YAML block could not set String("치틀리") to String("우 리브루 다 이노센시아"): Error converting BookOption: unrecognized key '치틀리' 00:00:02 d #1332 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.md.html; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.md.html; result = 10052 } 00:00:02 v #1333 ! 10:54:07 [DEBUG] (1) crowbook::book: Attempting to generate pdf... 00:00:02 i #1334 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.hangul.md } 00:00:02 d #1335 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\microsoft.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/microsoft/microsoft.i574n.hangul.md; result = 96 } 00:00:02 v #1336 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 v #1337 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1338 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/motorcycle/motorcycle.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/motorcycle/motorcycle.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 d #1339 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Stacy_x3.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Stacy_x3.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 d #1340 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/GirlOffGrid.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/GirlOffGrid.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1341 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1342 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/korean.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/korean.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1343 ! 10:54:07 [DEBUG] (1) crowbook::latex: Attempting to run LaTeX on generated file 00:00:02 v #1344 > c621e83d16716f578ef49a69593ad48d79b8d315 00:00:02 v #1345 > cb0232045c36a04a06163a007ad562c73b568cbf 00:00:02 v #1346 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #1347 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.hangul.md.epub } 00:00:02 v #1348 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 d #1349 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.hangul.md.epub; result = 5513 } 00:00:02 i #1350 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.hangul.md.pdf } 00:00:02 d #1351 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.hangul.md.pdf; result = 3989 } 00:00:02 i #1352 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.hangul.md.html } 00:00:02 i #1353 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.hangul.md.epub } 00:00:02 d #1354 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.hangul.md.html; result = 10077 } 00:00:02 i #1355 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.md.epub } 00:00:02 d #1356 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/apple/apple.i574n.hangul.md.epub; result = 5510 } 00:00:02 d #1357 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.md.epub; result = 5459 } 00:00:02 i #1358 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.hangul.md.pdf } 00:00:02 i #1359 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.md.pdf } 00:00:02 d #1360 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/apple/apple.i574n.hangul.md.pdf; result = 4375 } 00:00:02 d #1361 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.md.pdf; result = 6430 } 00:00:02 i #1362 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.hangul.md.html } 00:00:02 i #1363 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.md.html } 00:00:02 d #1364 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.md.html; result = 10153 } 00:00:02 d #1364 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/apple/apple.i574n.hangul.md.html; result = 10079 } 00:00:02 i #1366 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.md.epub } 00:00:02 i #1367 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.hangul.md } 00:00:02 d #1368 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.md.epub; new_path = c:/home/git/vault/dist/data/apple/apple.i574n.md.epub; result = 5448 } 00:00:02 d #1369 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/web3/storage.fc1943s.hangul.md; result = 173 } 00:00:02 i #1370 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.md.pdf } 00:00:02 d #1371 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/apple/apple.i574n.md.pdf; result = 5913 } 00:00:02 i #1372 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.md.html } 00:00:02 d #1373 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.md.html; new_path = c:/home/git/vault/dist/data/apple/apple.i574n.md.html; result = 10053 } 00:00:02 i #1374 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/apple/apple.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.hangul.md } 00:00:02 d #1375 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\apple.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/apple/apple.i574n.hangul.md; result = 98 } 00:00:02 d #1376 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/storage.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/storage.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 d #1377 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/art/art.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/art/art.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1378 > 'aa9b632fd28a65b90889fceeaac081b022d42341' 00:00:02 v #1379 > cf4ab3213857e7332c4aa6d4298bceed4722422c 00:00:02 v #1380 > 58ba8dcbf16a6c08e6db4a9db3619c119f00757d 00:00:02 v #1381 > '24ca6b8bb4703b72584fc04f018322ca2fbb243a' 00:00:02 v #1382 > f5e82445d251df9ddf5c77ec561ad32ff1304781 00:00:02 v #1383 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 v #1384 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 d #1385 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/github/github.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/github/github.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1386 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #1387 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.hangul.md.epub } 00:00:02 d #1388 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.hangul.md.epub; result = 5569 } 00:00:02 i #1389 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.hangul.md.pdf } 00:00:02 v #1390 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1391 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.hangul.md.pdf; result = 4626 } 00:00:02 i #1392 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.hangul.md.html } 00:00:02 d #1393 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.hangul.md.html; result = 11683 } 00:00:02 i #1394 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.md.epub } 00:00:02 i #1395 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.hangul.md.epub } 00:00:02 d #1396 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.md.epub; result = 5494 } 00:00:02 d #1397 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.hangul.md.epub; result = 5564 } 00:00:02 i #1398 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.md.pdf } 00:00:02 d #1398 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/motorcycle/motorcycle.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/motorcycle/motorcycle.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1400 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #1401 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.hangul.md.pdf } 00:00:02 d #1402 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.md.pdf; result = 5019 } 00:00:02 d #1403 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.hangul.md.pdf; result = 4843 } 00:00:02 i #1404 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.md.html } 00:00:02 i #1405 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.hangul.md.html } 00:00:02 d #1406 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.md.html; new_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.md.html; result = 11642 } 00:00:02 d #1407 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.hangul.md.html; result = 11676 } 00:00:02 i #1408 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.hangul.md } 00:00:02 i #1409 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.md.epub } 00:00:02 i #1410 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.hangul.md.epub } 00:00:02 d #1411 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.png.hangul.md.epub; result = 5892 } 00:00:02 d #1412 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\GirlOffGrid.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/GirlOffGrid.html.hangul.md; result = 152 } 00:00:02 i #1413 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.hangul.md.pdf } 00:00:02 d #1414 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.md.epub; result = 5492 } 00:00:02 i #1415 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.md.pdf } 00:00:02 d #1416 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.png.hangul.md.pdf; result = 2464 } 00:00:02 i #1417 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.hangul.md.html } 00:00:02 d #1418 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.md.pdf; result = 4906 } 00:00:02 i #1419 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.md.html } 00:00:02 d #1420 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.png.hangul.md.html; result = 11145 } 00:00:02 i #1421 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.md.epub } 00:00:02 d #1422 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/HinakoHime.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/HinakoHime.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 d #1423 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.md.html; result = 11639 } 00:00:02 i #1424 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.hangul.md } 00:00:02 d #1425 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.md.epub; new_path = c:/home/git/vault/dist/data/dialects/korean.png.md.epub; result = 5706 } 00:00:02 i #1426 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.md.pdf } 00:00:02 d #1427 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stacy_x3.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Stacy_x3.html.hangul.md; result = 145 } 00:00:02 d #1428 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/korean.png.md.pdf; result = 2466 } 00:00:02 i #1429 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.md.html } 00:00:02 d #1430 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.md.html; new_path = c:/home/git/vault/dist/data/dialects/korean.png.md.html; result = 10739 } 00:00:02 i #1431 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/korean.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.hangul.md } 00:00:02 d #1432 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\korean.png.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/korean.png.hangul.md; result = 1018 } 00:00:02 d #1433 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Stephanie.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Stephanie.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 d #1434 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/portuguese.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/portuguese.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1435 > '8f0f7e98d0572dee6df62f9ca6e3d59bd4d2a4c3' 00:00:02 v #1436 > '02380a4f67cd6e997b3a6908ff083f06fd787dc3' 00:00:02 v #1437 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 v #1438 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1439 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/art/art.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/art/art.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 d #1440 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/storage.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/storage.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1441 > aa9b632fd28a65b90889fceeaac081b022d42341 00:00:02 v #1442 > 24ca6b8bb4703b72584fc04f018322ca2fbb243a 00:00:02 v #1443 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 i #1444 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.hangul.md.epub } 00:00:02 d #1445 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/github/github.fc1943s.hangul.md.epub; result = 5509 } 00:00:02 i #1446 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.hangul.md.pdf } 00:00:02 v #1447 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:02 v #1448 > 'd885db673a3eadbfc7bfed33142a1fa33e87152b' 00:00:02 d #1449 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/github/github.fc1943s.hangul.md.pdf; result = 4530 } 00:00:02 i #1450 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.hangul.md.html } 00:00:02 d #1451 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/github/github.fc1943s.hangul.md.html; result = 10083 } 00:00:02 i #1452 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.md.epub } 00:00:02 i #1453 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.hangul.md.epub } 00:00:02 d #1454 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/github/github.fc1943s.md.epub; result = 5448 } 00:00:02 d #1455 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.hangul.md.epub; new_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.hangul.md.epub; result = 27699 } 00:00:02 i #1456 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.md.pdf } 00:00:02 i #1457 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.hangul.md.pdf } 00:00:02 d #1458 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/github/github.fc1943s.md.pdf; result = 6403 } 00:00:02 i #1459 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.md.html } 00:00:02 d #1460 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.hangul.md.pdf; result = 32901 } 00:00:02 v #1461 > 'd1f86efd6a618fd5e2c37d84ff58297aab9949b4' 00:00:02 d #1462 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/github/github.fc1943s.md.html; result = 10056 } 00:00:02 i #1463 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.hangul.md } 00:00:02 v #1464 > 'de3214502cd7688c3205782f465182caf2927a32' 00:00:02 i #1465 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.hangul.md.html } 00:00:02 d #1466 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/github/github.fc1943s.hangul.md; result = 102 } 00:00:02 d #1467 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.hangul.md.html; new_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.hangul.md.html; result = 121331 } 00:00:02 i #1468 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.md.epub } 00:00:02 d #1469 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.md.epub; new_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.md.epub; result = 24962 } 00:00:02 i #1470 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.md.pdf } 00:00:02 d #1471 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/github/github.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/github/github.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 d #1472 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.md.pdf; new_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.md.pdf; result = 89645 } 00:00:02 i #1473 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.md.html } 00:00:02 d #1474 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.md.html; new_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.md.html; result = 85924 } 00:00:02 v #1475 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 i #1476 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.hangul.md } 00:00:02 d #1477 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\motorcycle.hangul.md; new_path = c:/home/git/vault/dist/data/motorcycle/motorcycle.hangul.md; result = 94916 } 00:00:02 d #1478 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Stephanie.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Stephanie.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1479 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1480 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/music/mecha-haze.7z.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/music/mecha-haze.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:02 v #1481 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:02 d #1482 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/portuguese.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/portuguese.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 d #1483 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/HinakoHime.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/HinakoHime.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:02 v #1484 > 02380a4f67cd6e997b3a6908ff083f06fd787dc3 00:00:02 v #1485 > 8f0f7e98d0572dee6df62f9ca6e3d59bd4d2a4c3 00:00:03 v #1486 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 v #1487 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 i #1488 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.hangul.md.epub } 00:00:03 i #1489 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/art/art.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\art.hangul.md.epub } 00:00:03 d #1490 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/storage.html.hangul.md.epub; result = 5516 } 00:00:03 i #1491 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.hangul.md.pdf } 00:00:03 d #1492 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\art.hangul.md.epub; new_path = c:/home/git/vault/dist/data/art/art.hangul.md.epub; result = 16105 } 00:00:03 d #1493 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/storage.html.hangul.md.pdf; result = 3757 } 00:00:03 i #1494 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/art/art.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\art.hangul.md.pdf } 00:00:03 i #1495 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.hangul.md.html } 00:00:03 d #1496 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\art.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/art/art.hangul.md.pdf; result = 17380 } 00:00:03 d #1497 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/storage.html.hangul.md.html; result = 10102 } 00:00:03 i #1498 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/art/art.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\art.hangul.md.html } 00:00:03 i #1499 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.md.epub } 00:00:03 d #1500 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\art.hangul.md.html; new_path = c:/home/git/vault/dist/data/art/art.hangul.md.html; result = 65279 } 00:00:03 d #1501 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.md.epub; new_path = c:/home/git/vault/dist/data/web3/storage.html.md.epub; result = 5444 } 00:00:03 i #1502 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/art/art.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\art.md.epub } 00:00:03 d #1503 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\art.md.epub; new_path = c:/home/git/vault/dist/data/art/art.md.epub; result = 14777 } 00:00:03 i #1504 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/art/art.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\art.md.pdf } 00:00:03 i #1505 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.md.pdf } 00:00:03 d #1506 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\art.md.pdf; new_path = c:/home/git/vault/dist/data/art/art.md.pdf; result = 52219 } 00:00:03 i #1507 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/art/art.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\art.md.html } 00:00:03 d #1508 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.md.pdf; new_path = c:/home/git/vault/dist/data/web3/storage.html.md.pdf; result = 5809 } 00:00:03 i #1509 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.md.html } 00:00:03 d #1510 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\art.md.html; new_path = c:/home/git/vault/dist/data/art/art.md.html; result = 47098 } 00:00:03 d #1511 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.md.html; new_path = c:/home/git/vault/dist/data/web3/storage.html.md.html; result = 10062 } 00:00:03 i #1512 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/art/art.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\art.hangul.md } 00:00:03 i #1513 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/storage.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.hangul.md } 00:00:03 d #1514 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\art.hangul.md; new_path = c:/home/git/vault/dist/data/art/art.hangul.md; result = 47256 } 00:00:03 d #1515 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\storage.html.hangul.md; new_path = c:/home/git/vault/dist/data/web3/storage.html.hangul.md; result = 135 } 00:00:03 d #1516 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/astrology/astrology.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/astrology/astrology.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 d #1517 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/web3.fc1943s.7z.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/web3.fc1943s.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #1518 > '59cafeb2eab9137533d826d1f22e9b6de89480de' 00:00:03 v #1519 > d885db673a3eadbfc7bfed33142a1fa33e87152b 00:00:03 v #1520 > de3214502cd7688c3205782f465182caf2927a32 00:00:03 v #1521 > d1f86efd6a618fd5e2c37d84ff58297aab9949b4 00:00:03 v #1522 > '3aefa48e6c711a297a64c548bd78a747c26bc2ff' 00:00:03 v #1523 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 i #1524 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stephanie.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.hangul.md.epub } 00:00:03 v #1525 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 v #1526 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 d #1527 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Stephanie.html.hangul.md.epub; result = 5560 } 00:00:03 d #1528 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/github/github.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/github/github.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 i #1529 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stephanie.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.hangul.md.pdf } 00:00:03 v #1530 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 d #1531 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Stephanie.html.hangul.md.pdf; result = 4626 } 00:00:03 i #1532 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stephanie.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.hangul.md.html } 00:00:03 d #1533 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Stephanie.html.hangul.md.html; result = 11674 } 00:00:03 i #1534 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.hangul.md.epub } 00:00:03 i #1535 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/portuguese.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.hangul.md.epub } 00:00:03 i #1536 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stephanie.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.md.epub } 00:00:03 d #1537 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/portuguese.hangul.md.epub; result = 10344 } 00:00:03 d #1537 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.hangul.md.epub; result = 5563 } 00:00:03 d #1539 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Stephanie.html.md.epub; result = 5491 } 00:00:03 i #1540 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.hangul.md.pdf } 00:00:03 i #1541 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/portuguese.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.hangul.md.pdf } 00:00:03 i #1542 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stephanie.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.md.pdf } 00:00:03 v #1543 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1544 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/portuguese.hangul.md.pdf; result = 8568 } 00:00:03 d #1545 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.hangul.md.pdf; result = 4626 } 00:00:03 d #1546 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Stephanie.html.md.pdf; result = 4759 } 00:00:03 i #1547 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.hangul.md.html } 00:00:03 i #1548 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/portuguese.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.hangul.md.html } 00:00:03 i #1549 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stephanie.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.md.html } 00:00:03 d #1550 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.hangul.md.html; result = 11677 } 00:00:03 d #1551 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/portuguese.hangul.md.html; result = 31204 } 00:00:03 i #1552 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/portuguese.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.md.epub } 00:00:03 i #1553 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.md.epub } 00:00:03 d #1554 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Stephanie.html.md.html; result = 11640 } 00:00:03 i #1555 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Stephanie.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.hangul.md } 00:00:03 d #1556 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/music/mecha-haze.7z.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/music/mecha-haze.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 d #1557 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.md.epub; result = 5494 } 00:00:03 d #1558 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.md.epub; new_path = c:/home/git/vault/dist/data/dialects/portuguese.md.epub; result = 9453 } 00:00:03 d #1559 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Stephanie.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Stephanie.html.hangul.md; result = 143 } 00:00:03 i #1560 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.md.pdf } 00:00:03 i #1561 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/portuguese.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.md.pdf } 00:00:03 d #1562 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.md.pdf; result = 4912 } 00:00:03 i #1563 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.md.html } 00:00:03 d #1564 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/portuguese.md.pdf; result = 23477 } 00:00:03 i #1565 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/portuguese.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.md.html } 00:00:03 d #1566 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.md.html; new_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.md.html; result = 11641 } 00:00:03 i #1567 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.hangul.md } 00:00:03 d #1568 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.md.html; new_path = c:/home/git/vault/dist/data/dialects/portuguese.md.html; result = 25635 } 00:00:03 i #1569 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/portuguese.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.hangul.md } 00:00:03 d #1570 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\HinakoHime.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/HinakoHime.html.hangul.md; result = 146 } 00:00:03 d #1571 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/TinaHale.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/TinaHale.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 d #1572 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/ImperialKiss.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/ImperialKiss.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 d #1573 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\portuguese.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/portuguese.hangul.md; result = 17654 } 00:00:03 d #1574 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dialects/spanish.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dialects/spanish.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #1575 > '41cae76c6cc16843a084f0ce3da67875305b0e79' 00:00:03 v #1576 > '55a0a78a273271af1907f429f6ba3e2f9a521847' 00:00:03 v #1577 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1578 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/astrology/astrology.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/astrology/astrology.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #1579 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1580 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #1581 > 59cafeb2eab9137533d826d1f22e9b6de89480de 00:00:03 v #1582 > 3aefa48e6c711a297a64c548bd78a747c26bc2ff 00:00:03 v #1583 > '284d6ee9cb67d81827e8769e3fe9c1682cb3f2bf' 00:00:03 v #1584 > '774732b6fcb822c743c608aef727c05b0694c557' 00:00:03 v #1585 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 v #1586 > '6e0a5e5f4b8e22db3ef519cf6b1c5834c60896be' 00:00:03 v #1587 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 i #1588 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.hangul.md.epub } 00:00:03 d #1589 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.hangul.md.epub; new_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.hangul.md.epub; result = 5933 } 00:00:03 i #1590 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.hangul.md.pdf } 00:00:03 i #1591 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.html.hangul.md.epub } 00:00:03 d #1592 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.hangul.md.pdf; result = 8529 } 00:00:03 i #1593 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.hangul.md.html } 00:00:03 d #1594 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/github/github.html.hangul.md.epub; result = 5650 } 00:00:03 i #1595 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.html.hangul.md.pdf } 00:00:03 d #1596 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.hangul.md.html; new_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.hangul.md.html; result = 11189 } 00:00:03 i #1597 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.md.epub } 00:00:03 d #1598 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/github/github.html.hangul.md.pdf; result = 4755 } 00:00:03 i #1599 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.html.hangul.md.html } 00:00:03 d #1600 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.md.epub; new_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.md.epub; result = 5796 } 00:00:03 d #1601 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/github/github.html.hangul.md.html; result = 10503 } 00:00:03 i #1602 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.md.pdf } 00:00:03 i #1603 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.html.md.epub } 00:00:03 d #1604 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.md.pdf; new_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.md.pdf; result = 12072 } 00:00:03 d #1605 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.html.md.epub; new_path = c:/home/git/vault/dist/data/github/github.html.md.epub; result = 5534 } 00:00:03 i #1606 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.md.html } 00:00:03 i #1607 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.html.md.pdf } 00:00:03 v #1608 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1609 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.md.html; new_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.md.html; result = 11184 } 00:00:03 i #1610 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.hangul.md } 00:00:03 d #1611 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.html.md.pdf; new_path = c:/home/git/vault/dist/data/github/github.html.md.pdf; result = 7624 } 00:00:03 i #1612 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.html.md.html } 00:00:03 d #1613 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.7z.hangul.md; new_path = c:/home/git/vault/dist/data/music/mecha-haze.7z.hangul.md; result = 1014 } 00:00:03 d #1614 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/TinaHale.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/TinaHale.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 d #1615 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.html.md.html; new_path = c:/home/git/vault/dist/data/github/github.html.md.html; result = 10367 } 00:00:03 i #1616 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.html.hangul.md } 00:00:03 v #1617 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 v #1618 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1619 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.html.hangul.md; new_path = c:/home/git/vault/dist/data/github/github.html.hangul.md; result = 423 } 00:00:03 d #1620 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dialects/spanish.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dialects/spanish.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 d #1620 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/music/mecha-haze.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/music/mecha-haze.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 d #1622 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/ImperialKiss.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/ImperialKiss.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 d #1623 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/github/github.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/github/github.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #1624 > 41cae76c6cc16843a084f0ce3da67875305b0e79 00:00:03 v #1625 > 55a0a78a273271af1907f429f6ba3e2f9a521847 00:00:03 v #1626 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 i #1627 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.hangul.md.epub } 00:00:03 d #1628 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.hangul.md.epub; result = 43114 } 00:00:03 i #1629 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.hangul.md.pdf } 00:00:03 d #1630 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.hangul.md.pdf; result = 116003 } 00:00:03 i #1631 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.hangul.md.html } 00:00:03 d #1632 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.hangul.md.html; result = 217718 } 00:00:03 i #1633 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.md.epub } 00:00:03 d #1634 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.md.epub; result = 39894 } 00:00:03 i #1635 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.md.pdf } 00:00:03 d #1636 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.md.pdf; result = 186037 } 00:00:03 i #1637 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.md.html } 00:00:03 d #1638 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.md.html; result = 173538 } 00:00:03 i #1639 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.hangul.md } 00:00:03 v #1640 > 284d6ee9cb67d81827e8769e3fe9c1682cb3f2bf 00:00:03 d #1641 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/astrology/astrology.fc1943s.hangul.md; result = 153511 } 00:00:03 v #1642 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 d #1643 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/astrology/astrology.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/astrology/astrology.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 i #1644 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.hangul.md.epub } 00:00:03 d #1645 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.hangul.md.epub; result = 5654 } 00:00:03 i #1646 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.hangul.md.pdf } 00:00:03 d #1647 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.hangul.md.pdf; result = 5589 } 00:00:03 i #1648 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.hangul.md.html } 00:00:03 d #1649 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.hangul.md.html; result = 10319 } 00:00:03 i #1650 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.md.epub } 00:00:03 v #1651 > 774732b6fcb822c743c608aef727c05b0694c557 00:00:03 d #1652 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.md.epub; result = 5541 } 00:00:03 i #1653 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.md.pdf } 00:00:03 d #1654 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.md.pdf; result = 8065 } 00:00:03 v #1655 > '958832121d0f20dc5c6868c06bb576d70790c141' 00:00:03 v #1656 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 i #1657 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.md.html } 00:00:03 d #1658 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.md.html; result = 10314 } 00:00:03 i #1659 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.hangul.md } 00:00:03 d #1660 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.7z.hangul.md; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.7z.hangul.md; result = 312 } 00:00:03 i #1661 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/TinaHale.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.hangul.md.epub } 00:00:03 d #1662 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/TinaHale.html.hangul.md.epub; result = 5562 } 00:00:03 v #1663 > 6e0a5e5f4b8e22db3ef519cf6b1c5834c60896be 00:00:03 i #1664 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/TinaHale.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.hangul.md.pdf } 00:00:03 d #1665 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/web3.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/web3.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 d #1666 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/TinaHale.html.hangul.md.pdf; result = 4627 } 00:00:03 i #1667 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/TinaHale.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.hangul.md.html } 00:00:03 d #1668 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/TinaHale.html.hangul.md.html; result = 11674 } 00:00:03 i #1669 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/TinaHale.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.md.epub } 00:00:03 d #1670 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/TinaHale.html.md.epub; result = 5492 } 00:00:03 i #1671 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/TinaHale.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.md.pdf } 00:00:03 v #1672 > '27afa1d088c59f862a66f286a298bdb2682ff16d' 00:00:03 v #1673 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 d #1674 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/TinaHale.html.md.pdf; result = 4886 } 00:00:03 i #1675 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/TinaHale.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.md.html } 00:00:03 d #1676 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.md.html; new_path = c:/home/git/vault/dist/data/chat/TinaHale.html.md.html; result = 11639 } 00:00:03 i #1677 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/TinaHale.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.hangul.md } 00:00:03 v #1678 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1679 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\TinaHale.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/TinaHale.html.hangul.md; result = 143 } 00:00:03 i #1680 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.hangul.md.epub } 00:00:03 d #1681 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.hangul.md.epub; result = 5567 } 00:00:03 d #1682 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/music/mecha-haze.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/music/mecha-haze.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 i #1682 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.hangul.md.pdf } 00:00:03 d #1684 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.hangul.md.pdf; result = 4626 } 00:00:03 i #1685 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.hangul.md.html } 00:00:03 d #1686 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/WhitneyR.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/WhitneyR.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 d #1687 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.hangul.md.html; result = 11683 } 00:00:03 i #1688 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.md.epub } 00:00:03 v #1689 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 d #1690 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.md.epub; result = 5496 } 00:00:03 i #1691 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.md.pdf } 00:00:03 d #1692 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.md.pdf; result = 4864 } 00:00:03 i #1693 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.md.html } 00:00:03 d #1694 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.md.html; new_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.md.html; result = 11643 } 00:00:03 i #1694 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/spanish.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spanish.hangul.md.epub } 00:00:03 i #1696 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.hangul.md } 00:00:03 d #1697 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ImperialKiss.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/ImperialKiss.html.hangul.md; result = 152 } 00:00:03 d #1698 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spanish.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dialects/spanish.hangul.md.epub; result = 20164 } 00:00:03 i #1699 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/spanish.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spanish.hangul.md.pdf } 00:00:03 d #1700 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spanish.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/spanish.hangul.md.pdf; result = 21277 } 00:00:03 i #1701 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/spanish.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spanish.hangul.md.html } 00:00:03 d #1702 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spanish.hangul.md.html; new_path = c:/home/git/vault/dist/data/dialects/spanish.hangul.md.html; result = 78039 } 00:00:03 d #1703 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/JALYN.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/JALYN.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 i #1704 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/spanish.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spanish.md.epub } 00:00:03 d #1705 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spanish.md.epub; new_path = c:/home/git/vault/dist/data/dialects/spanish.md.epub; result = 18291 } 00:00:03 i #1706 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/spanish.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spanish.md.pdf } 00:00:03 d #1707 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spanish.md.pdf; new_path = c:/home/git/vault/dist/data/dialects/spanish.md.pdf; result = 59586 } 00:00:03 i #1708 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/spanish.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spanish.md.html } 00:00:03 v #1709 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1710 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spanish.md.html; new_path = c:/home/git/vault/dist/data/dialects/spanish.md.html; result = 56736 } 00:00:03 i #1711 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dialects/spanish.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spanish.hangul.md } 00:00:03 d #1712 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spanish.hangul.md; new_path = c:/home/git/vault/dist/data/dialects/spanish.hangul.md; result = 57778 } 00:00:03 d #1713 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/github/github.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/github/github.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 d #1714 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dotnet/dotnet.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dotnet/dotnet.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #1715 > '4007a55af935129be5481c0874a4c074bd62ad70' 00:00:03 v #1716 > 'a723feaae6f8e91d29bb55f9687d6cc9ab00c214' 00:00:03 v #1717 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 v #1718 > 'f98fd45751bb507ec323e46218ab9a97065127d7' 00:00:03 d #1719 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/astrology/astrology.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/astrology/astrology.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #1720 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1721 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/web3.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/web3.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #1722 > 'e2a97d576e8c00a85dd8a963faa6b0bd07588818' 00:00:03 v #1723 > 958832121d0f20dc5c6868c06bb576d70790c141 00:00:03 v #1724 > 27afa1d088c59f862a66f286a298bdb2682ff16d 00:00:03 v #1725 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1726 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/WhitneyR.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/WhitneyR.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #1727 > '4444c1a375a066e67699f10d0ccc5f7847e149cb' 00:00:03 v #1728 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 v #1729 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1730 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/JALYN.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/JALYN.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 i #1731 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.hangul.md.epub } 00:00:03 v #1732 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 d #1733 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/music/mecha-haze.html.hangul.md.epub; result = 5578 } 00:00:03 i #1734 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.hangul.md.pdf } 00:00:03 d #1735 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/music/mecha-haze.html.hangul.md.pdf; result = 4748 } 00:00:03 i #1736 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.hangul.md.html } 00:00:03 i #1737 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.hangul.md.epub } 00:00:03 d #1738 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/music/mecha-haze.html.hangul.md.html; result = 10179 } 00:00:03 i #1739 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.md.epub } 00:00:03 d #1740 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.hangul.md.epub; new_path = c:/home/git/vault/dist/data/github/github.hangul.md.epub; result = 5535 } 00:00:03 v #1741 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 i #1742 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.hangul.md.pdf } 00:00:03 d #1743 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.md.epub; new_path = c:/home/git/vault/dist/data/music/mecha-haze.html.md.epub; result = 5488 } 00:00:03 d #1744 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/github/github.hangul.md.pdf; result = 4127 } 00:00:03 i #1745 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.md.pdf } 00:00:03 i #1746 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.hangul.md.html } 00:00:03 d #1747 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.md.pdf; new_path = c:/home/git/vault/dist/data/music/mecha-haze.html.md.pdf; result = 7490 } 00:00:03 d #1748 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.hangul.md.html; new_path = c:/home/git/vault/dist/data/github/github.hangul.md.html; result = 10048 } 00:00:03 i #1749 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.md.html } 00:00:03 d #1750 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dotnet/dotnet.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dotnet/dotnet.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 i #1751 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.md.epub } 00:00:03 d #1752 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.md.epub; new_path = c:/home/git/vault/dist/data/github/github.md.epub; result = 5492 } 00:00:03 i #1753 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.md.pdf } 00:00:03 d #1754 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.md.html; new_path = c:/home/git/vault/dist/data/music/mecha-haze.html.md.html; result = 10116 } 00:00:03 i #1755 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.hangul.md } 00:00:03 d #1756 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.md.pdf; new_path = c:/home/git/vault/dist/data/github/github.md.pdf; result = 6161 } 00:00:03 i #1757 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.md.html } 00:00:03 d #1758 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.html.hangul.md; new_path = c:/home/git/vault/dist/data/music/mecha-haze.html.hangul.md; result = 208 } 00:00:03 d #1759 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.md.html; new_path = c:/home/git/vault/dist/data/github/github.md.html; result = 10235 } 00:00:03 i #1760 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/github/github.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\github.hangul.md } 00:00:03 d #1761 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\github.hangul.md; new_path = c:/home/git/vault/dist/data/github/github.hangul.md; result = 118 } 00:00:03 d #1762 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/music/mecha-haze.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/music/mecha-haze.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 d #1763 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/google/google.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/google/google.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #1764 > 4007a55af935129be5481c0874a4c074bd62ad70 00:00:03 v #1765 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 i #1766 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.hangul.md.epub } 00:00:03 d #1767 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/astrology/astrology.html.hangul.md.epub; result = 5519 } 00:00:03 v #1768 > a723feaae6f8e91d29bb55f9687d6cc9ab00c214 00:00:03 i #1769 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.hangul.md.pdf } 00:00:03 d #1770 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/astrology/astrology.html.hangul.md.pdf; result = 2611 } 00:00:03 i #1771 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.hangul.md.html } 00:00:03 d #1772 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/astrology/astrology.html.hangul.md.html; result = 10075 } 00:00:03 i #1773 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.md.epub } 00:00:03 v #1774 > f98fd45751bb507ec323e46218ab9a97065127d7 00:00:03 d #1775 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.md.epub; new_path = c:/home/git/vault/dist/data/astrology/astrology.html.md.epub; result = 5450 } 00:00:03 i #1776 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.md.pdf } 00:00:03 d #1777 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.md.pdf; new_path = c:/home/git/vault/dist/data/astrology/astrology.html.md.pdf; result = 5870 } 00:00:03 i #1778 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.md.html } 00:00:03 d #1779 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.md.html; new_path = c:/home/git/vault/dist/data/astrology/astrology.html.md.html; result = 10134 } 00:00:03 i #1780 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.hangul.md } 00:00:03 d #1781 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.html.hangul.md; new_path = c:/home/git/vault/dist/data/astrology/astrology.html.hangul.md; result = 144 } 00:00:03 d #1782 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/astrology/astrology.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/astrology/astrology.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #1783 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 i #1784 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.hangul.md.epub } 00:00:03 v #1785 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 d #1786 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.hangul.md.epub; result = 5745 } 00:00:03 i #1787 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.hangul.md.pdf } 00:00:03 d #1788 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.hangul.md.pdf; result = 6705 } 00:00:03 i #1789 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.hangul.md.html } 00:00:03 d #1790 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.hangul.md.html; result = 10517 } 00:00:03 i #1791 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.hangul.md.epub } 00:00:03 i #1792 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.md.epub } 00:00:03 d #1793 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.hangul.md.epub; result = 5562 } 00:00:03 d #1794 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.md.epub; result = 5693 } 00:00:03 i #1795 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.hangul.md.pdf } 00:00:03 i #1796 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.md.pdf } 00:00:03 d #1797 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.hangul.md.pdf; result = 4624 } 00:00:03 d #1798 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.md.pdf; result = 13933 } 00:00:03 i #1799 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.md.html } 00:00:03 i #1799 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.hangul.md.html } 00:00:03 d #1801 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.hangul.md.html; result = 11677 } 00:00:03 d #1802 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.md.html; result = 10876 } 00:00:03 i #1803 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.md.epub } 00:00:03 i #1804 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.hangul.md } 00:00:03 v #1805 > 'df90480d7167c6c24119ee562da030d08f4ff6cf' 00:00:03 d #1806 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/web3/web3.fc1943s.hangul.md; result = 472 } 00:00:03 d #1807 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.md.epub; result = 5492 } 00:00:03 i #1808 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.md.pdf } 00:00:03 d #1809 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.md.pdf; result = 5055 } 00:00:03 i #1810 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.md.html } 00:00:03 d #1811 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.md.html; new_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.md.html; result = 11639 } 00:00:03 i #1812 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.hangul.md } 00:00:03 d #1813 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/web3.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/web3.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 d #1814 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\WhitneyR.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/WhitneyR.html.hangul.md; result = 147 } 00:00:03 v #1815 > e2a97d576e8c00a85dd8a963faa6b0bd07588818 00:00:03 v #1816 > 4444c1a375a066e67699f10d0ccc5f7847e149cb 00:00:03 d #1817 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Yarrow.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Yarrow.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #1818 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 v #1819 > '39a4aa5522c29d1e4a6cc2af335e668046fd4cf2' 00:00:03 v #1820 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 v #1821 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 d #1822 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/music/mecha-haze.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/music/mecha-haze.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 i #1823 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/JALYN.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.hangul.md.epub } 00:00:03 d #1824 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/JALYN.html.hangul.md.epub; result = 5559 } 00:00:03 i #1825 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/JALYN.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.hangul.md.pdf } 00:00:03 i #1826 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dotnet/dotnet.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.hangul.md.epub } 00:00:03 d #1827 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dotnet/dotnet.hangul.md.epub; result = 5461 } 00:00:03 d #1827 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/JALYN.html.hangul.md.pdf; result = 4629 } 00:00:03 i #1829 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dotnet/dotnet.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.hangul.md.pdf } 00:00:03 i #1829 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/JALYN.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.hangul.md.html } 00:00:03 d #1831 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/JALYN.html.hangul.md.html; result = 11668 } 00:00:03 d #1831 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dotnet/dotnet.hangul.md.pdf; result = 3401 } 00:00:03 i #1833 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dotnet/dotnet.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.hangul.md.html } 00:00:03 i #1833 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/JALYN.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.md.epub } 00:00:03 d #1835 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/JALYN.html.md.epub; result = 5493 } 00:00:03 d #1836 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.hangul.md.html; new_path = c:/home/git/vault/dist/data/dotnet/dotnet.hangul.md.html; result = 9977 } 00:00:03 i #1837 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dotnet/dotnet.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.md.epub } 00:00:03 i #1838 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/JALYN.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.md.pdf } 00:00:03 d #1839 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.md.epub; new_path = c:/home/git/vault/dist/data/dotnet/dotnet.md.epub; result = 5416 } 00:00:03 d #1839 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/JALYN.html.md.pdf; result = 5097 } 00:00:03 i #1841 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/JALYN.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.md.html } 00:00:03 i #1842 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dotnet/dotnet.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.md.pdf } 00:00:03 d #1843 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.md.html; new_path = c:/home/git/vault/dist/data/chat/JALYN.html.md.html; result = 11636 } 00:00:03 d #1844 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.md.pdf; new_path = c:/home/git/vault/dist/data/dotnet/dotnet.md.pdf; result = 4970 } 00:00:03 i #1845 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/JALYN.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.hangul.md } 00:00:03 i #1846 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dotnet/dotnet.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.md.html } 00:00:03 d #1847 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\JALYN.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/JALYN.html.hangul.md; result = 137 } 00:00:03 d #1848 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.md.html; new_path = c:/home/git/vault/dist/data/dotnet/dotnet.md.html; result = 9957 } 00:00:03 i #1849 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dotnet/dotnet.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.hangul.md } 00:00:03 d #1850 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dotnet.hangul.md; new_path = c:/home/git/vault/dist/data/dotnet/dotnet.hangul.md; result = 66 } 00:00:03 d #1851 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Jully_Lov.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Jully_Lov.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #1852 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1853 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/doujinshi/doujinshi.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/doujinshi/doujinshi.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 d #1854 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/google/google.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/google/google.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #1855 > '2c06b013af1d068ad31ba331c43998c1e4bed274' 00:00:03 v #1856 > '92f543f4856cde35cccf2d2d21bd6a78ad15dd3b' 00:00:03 v #1857 > 'd52eee26d16ca6ea0d4f412a90aed750bab95042' 00:00:03 v #1858 > df90480d7167c6c24119ee562da030d08f4ff6cf 00:00:03 v #1859 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 v #1860 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1861 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/astrology/astrology.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/astrology/astrology.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 d #1862 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/web3.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/web3.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #1863 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 v #1864 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 d #1865 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Yarrow.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Yarrow.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 i #1866 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.hangul.md.epub } 00:00:03 d #1867 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.hangul.md.epub; result = 5973 } 00:00:03 i #1868 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.hangul.md.pdf } 00:00:03 d #1869 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.hangul.md.pdf; result = 5433 } 00:00:03 i #1870 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.hangul.md.html } 00:00:03 v #1871 > 39a4aa5522c29d1e4a6cc2af335e668046fd4cf2 00:00:03 d #1872 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.hangul.md.html; result = 11802 } 00:00:03 i #1873 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.md.epub } 00:00:03 d #1874 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.md.epub; new_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.md.epub; result = 5777 } 00:00:03 i #1875 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.md.pdf } 00:00:03 d #1876 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.md.pdf; result = 9929 } 00:00:03 i #1877 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.md.html } 00:00:03 d #1878 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.md.html; new_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.md.html; result = 11242 } 00:00:03 i #1879 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.hangul.md } 00:00:03 d #1880 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mecha-haze.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/music/mecha-haze.pdf.hangul.md; result = 1657 } 00:00:03 v #1881 > '460ade05b46845f1860c525fad851cadb565e729' 00:00:03 v #1882 > 'b0c8fd838dd78173824274b77bbcef62bcaa2290' 00:00:03 d #1883 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/music/mixtape-pluto.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/music/mixtape-pluto.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #1884 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 v #1885 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1886 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Jully_Lov.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Jully_Lov.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #1887 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1888 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/doujinshi/doujinshi.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/doujinshi/doujinshi.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 i #1889 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.hangul.md.epub } 00:00:03 d #1890 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/google/google.fc1943s.hangul.md.epub; result = 5542 } 00:00:03 i #1891 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.hangul.md.pdf } 00:00:03 d #1892 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/google/google.fc1943s.hangul.md.pdf; result = 4582 } 00:00:03 i #1893 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.hangul.md.html } 00:00:03 d #1894 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/google/google.fc1943s.hangul.md.html; result = 10303 } 00:00:03 i #1895 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.md.epub } 00:00:03 d #1896 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/google/google.fc1943s.md.epub; result = 5465 } 00:00:03 i #1897 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.md.pdf } 00:00:03 d #1898 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/google/google.fc1943s.md.pdf; result = 6447 } 00:00:03 i #1899 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.md.html } 00:00:03 d #1900 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/google/google.fc1943s.md.html; result = 10241 } 00:00:03 i #1901 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.hangul.md } 00:00:03 d #1902 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/google/google.fc1943s.hangul.md; result = 221 } 00:00:03 d #1903 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/google/google.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/google/google.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #1904 > 92f543f4856cde35cccf2d2d21bd6a78ad15dd3b 00:00:03 v #1905 > 2c06b013af1d068ad31ba331c43998c1e4bed274 00:00:03 v #1906 > d52eee26d16ca6ea0d4f412a90aed750bab95042 00:00:03 v #1907 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 v #1908 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 i #1909 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.hangul.md.epub } 00:00:03 d #1910 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.hangul.md.epub; new_path = c:/home/git/vault/dist/data/astrology/astrology.hangul.md.epub; result = 25892 } 00:00:03 i #1911 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.hangul.md.epub } 00:00:03 i #1912 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.hangul.md.pdf } 00:00:03 d #1913 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.html.hangul.md.epub; result = 5557 } 00:00:03 d #1914 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/astrology/astrology.hangul.md.pdf; result = 34721 } 00:00:03 i #1915 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.hangul.md.html } 00:00:03 i #1916 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.hangul.md.pdf } 00:00:03 d #1917 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.hangul.md.html; new_path = c:/home/git/vault/dist/data/astrology/astrology.hangul.md.html; result = 141246 } 00:00:03 d #1918 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.html.hangul.md.pdf; result = 3791 } 00:00:03 i #1919 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.hangul.md.html } 00:00:03 i #1920 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.md.epub } 00:00:03 d #1921 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.html.hangul.md.html; result = 10329 } 00:00:03 d #1922 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.md.epub; new_path = c:/home/git/vault/dist/data/astrology/astrology.md.epub; result = 23071 } 00:00:03 i #1923 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.md.epub } 00:00:03 i #1924 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.md.pdf } 00:00:03 v #1925 > '7856f655f4f8476bfb86169e7afb3d5434957dee' 00:00:03 v #1926 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 d #1927 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.html.md.epub; result = 5472 } 00:00:03 d #1928 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.md.pdf; new_path = c:/home/git/vault/dist/data/astrology/astrology.md.pdf; result = 99118 } 00:00:03 i #1929 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.md.pdf } 00:00:03 i #1930 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.md.html } 00:00:03 d #1931 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.html.md.pdf; result = 6103 } 00:00:03 d #1932 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.md.html; new_path = c:/home/git/vault/dist/data/astrology/astrology.md.html; result = 96432 } 00:00:03 i #1933 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astrology/astrology.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astrology.hangul.md } 00:00:03 i #1934 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.md.html } 00:00:03 i #1935 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yarrow.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.hangul.md.epub } 00:00:03 d #1936 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astrology.hangul.md; new_path = c:/home/git/vault/dist/data/astrology/astrology.hangul.md; result = 115556 } 00:00:03 d #1937 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.html.md.html; result = 10254 } 00:00:03 i #1938 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.hangul.md } 00:00:03 d #1939 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Yarrow.html.hangul.md.epub; result = 5557 } 00:00:03 i #1940 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yarrow.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.hangul.md.pdf } 00:00:03 d #1941 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.html.hangul.md; new_path = c:/home/git/vault/dist/data/web3/web3.html.hangul.md; result = 273 } 00:00:03 d #1942 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Yarrow.html.hangul.md.pdf; result = 4624 } 00:00:03 i #1943 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yarrow.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.hangul.md.html } 00:00:03 d #1944 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/astronomy/astronomy.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/astronomy/astronomy.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 d #1945 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Yarrow.html.hangul.md.html; result = 11668 } 00:00:03 i #1946 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yarrow.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.md.epub } 00:00:03 d #1947 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/web3.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/web3.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 d #1948 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Yarrow.html.md.epub; result = 5488 } 00:00:03 i #1949 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yarrow.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.md.pdf } 00:00:03 d #1950 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Yarrow.html.md.pdf; result = 4931 } 00:00:03 i #1951 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yarrow.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.md.html } 00:00:03 d #1952 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Yarrow.html.md.html; result = 11637 } 00:00:03 i #1953 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yarrow.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.hangul.md } 00:00:03 d #1954 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yarrow.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Yarrow.html.hangul.md; result = 137 } 00:00:03 v #1955 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1956 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/music/mixtape-pluto.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/music/mixtape-pluto.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 d #1957 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Yukenzi.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Yukenzi.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #1958 > 460ade05b46845f1860c525fad851cadb565e729 00:00:03 v #1959 > b0c8fd838dd78173824274b77bbcef62bcaa2290 00:00:03 v #1960 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 i #1961 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.hangul.md.epub } 00:00:03 d #1962 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.hangul.md.epub; result = 5563 } 00:00:03 i #1963 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.hangul.md.pdf } 00:00:03 d #1964 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.hangul.md.pdf; result = 4677 } 00:00:03 i #1965 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.hangul.md.html } 00:00:03 d #1966 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.hangul.md.html; result = 11671 } 00:00:03 i #1967 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.md.epub } 00:00:03 d #1968 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.md.epub; result = 5492 } 00:00:03 i #1969 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.md.pdf } 00:00:03 d #1970 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.md.pdf; result = 4927 } 00:00:03 i #1971 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.md.html } 00:00:03 d #1972 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.md.html; result = 11635 } 00:00:03 i #1973 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.hangul.md } 00:00:03 d #1974 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Jully_Lov.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Jully_Lov.html.hangul.md; result = 141 } 00:00:03 v #1975 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 d #1976 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/kittennmoon.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/kittennmoon.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 i #1977 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.hangul.md.epub } 00:00:03 d #1978 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.hangul.md.epub; new_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.hangul.md.epub; result = 22492 } 00:00:03 i #1979 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.hangul.md.pdf } 00:00:03 d #1980 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.hangul.md.pdf; result = 41661 } 00:00:03 i #1981 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.hangul.md.html } 00:00:03 d #1982 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.hangul.md.html; new_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.hangul.md.html; result = 146553 } 00:00:03 v #1983 > '1013875caf0a332dc86ee8da724f19e74e796252' 00:00:03 i #1984 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.md.epub } 00:00:03 d #1985 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.md.epub; new_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.md.epub; result = 20254 } 00:00:03 i #1986 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.md.pdf } 00:00:03 d #1987 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.md.pdf; new_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.md.pdf; result = 105252 } 00:00:03 i #1988 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.md.html } 00:00:03 d #1989 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.md.html; new_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.md.html; result = 102650 } 00:00:03 i #1990 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.hangul.md } 00:00:03 d #1991 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\doujinshi.hangul.md; new_path = c:/home/git/vault/dist/data/doujinshi/doujinshi.hangul.md; result = 123460 } 00:00:03 d #1992 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/drugs/drugs.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/drugs/drugs.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #1993 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #1994 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/google/google.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/google/google.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #1995 > 7856f655f4f8476bfb86169e7afb3d5434957dee 00:00:03 v #1996 > '753041fb0dc0874d9ae140ef8b76be1301e02186' 00:00:03 v #1997 > '0c2e8945d1037cf0f10232f091d83d282a3ad155' 00:00:03 v #1998 > 'd328e42faa6744c53ddc51cce73e99babf354294' 00:00:03 v #1999 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:03 v #2000 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 i #2001 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mixtape-pluto.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.hangul.md.epub } 00:00:03 d #2002 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.hangul.md.epub; new_path = c:/home/git/vault/dist/data/music/mixtape-pluto.hangul.md.epub; result = 40498 } 00:00:03 i #2003 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mixtape-pluto.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.hangul.md.pdf } 00:00:03 d #2003 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/astronomy/astronomy.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/astronomy/astronomy.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 d #2005 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/music/mixtape-pluto.hangul.md.pdf; result = 206108 } 00:00:03 i #2006 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mixtape-pluto.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.hangul.md.html } 00:00:03 d #2007 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.hangul.md.html; new_path = c:/home/git/vault/dist/data/music/mixtape-pluto.hangul.md.html; result = 139753 } 00:00:03 i #2008 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mixtape-pluto.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.md.epub } 00:00:03 d #2009 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.md.epub; new_path = c:/home/git/vault/dist/data/music/mixtape-pluto.md.epub; result = 41640 } 00:00:03 v #2010 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 i #2011 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mixtape-pluto.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.md.pdf } 00:00:03 d #2012 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.md.pdf; new_path = c:/home/git/vault/dist/data/music/mixtape-pluto.md.pdf; result = 86665 } 00:00:03 i #2013 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mixtape-pluto.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.md.html } 00:00:03 d #2014 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Yukenzi.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Yukenzi.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #2015 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #2016 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.md.html; new_path = c:/home/git/vault/dist/data/music/mixtape-pluto.md.html; result = 128112 } 00:00:03 i #2017 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/mixtape-pluto.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.hangul.md } 00:00:03 d #2018 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/web3.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/web3.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 d #2019 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mixtape-pluto.hangul.md; new_path = c:/home/git/vault/dist/data/music/mixtape-pluto.hangul.md; result = 121850 } 00:00:03 d #2020 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/music/music.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/music/music.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:03 v #2021 > 'cba44947002177d81094bbfcafe46a93f1bdc47e' 00:00:03 v #2022 > '087920199f5f965c9f053b82497e31778239031a' 00:00:03 v #2023 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:03 d #2024 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/kittennmoon.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/kittennmoon.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:03 v #2025 > 1013875caf0a332dc86ee8da724f19e74e796252 00:00:04 v #2026 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2027 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/drugs/drugs.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/drugs/drugs.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2028 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2029 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.hangul.md.epub } 00:00:04 d #2030 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/google/google.i574n.hangul.md.epub; result = 5513 } 00:00:04 i #2031 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.hangul.md.pdf } 00:00:04 d #2032 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/google/google.i574n.hangul.md.pdf; result = 4377 } 00:00:04 i #2033 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.hangul.md.html } 00:00:04 d #2034 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/google/google.i574n.hangul.md.html; result = 10079 } 00:00:04 i #2035 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.md.epub } 00:00:04 d #2036 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.md.epub; new_path = c:/home/git/vault/dist/data/google/google.i574n.md.epub; result = 5449 } 00:00:04 i #2037 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.md.pdf } 00:00:04 d #2038 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/google/google.i574n.md.pdf; result = 6155 } 00:00:04 i #2039 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.md.html } 00:00:04 d #2040 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.md.html; new_path = c:/home/git/vault/dist/data/google/google.i574n.md.html; result = 10054 } 00:00:04 i #2041 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/google/google.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.hangul.md } 00:00:04 d #2042 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\google.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/google/google.i574n.hangul.md; result = 99 } 00:00:04 d #2043 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/hardware/hardware.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/hardware/hardware.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2044 > 753041fb0dc0874d9ae140ef8b76be1301e02186 00:00:04 v #2045 > 0c2e8945d1037cf0f10232f091d83d282a3ad155 00:00:04 v #2046 > d328e42faa6744c53ddc51cce73e99babf354294 00:00:04 v #2047 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 v #2047 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2049 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astronomy/astronomy.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.hangul.md.epub } 00:00:04 d #2050 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.hangul.md.epub; new_path = c:/home/git/vault/dist/data/astronomy/astronomy.hangul.md.epub; result = 8985 } 00:00:04 i #2051 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.hangul.md.epub } 00:00:04 i #2052 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astronomy/astronomy.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.hangul.md.pdf } 00:00:04 d #2053 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.hangul.md.epub; result = 5562 } 00:00:04 d #2054 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/astronomy/astronomy.hangul.md.pdf; result = 8573 } 00:00:04 i #2055 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.hangul.md.pdf } 00:00:04 i #2055 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astronomy/astronomy.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.hangul.md.html } 00:00:04 d #2057 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.hangul.md.pdf; result = 4625 } 00:00:04 d #2058 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.hangul.md.html; new_path = c:/home/git/vault/dist/data/astronomy/astronomy.hangul.md.html; result = 27366 } 00:00:04 i #2059 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astronomy/astronomy.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.md.epub } 00:00:04 i #2060 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.hangul.md.html } 00:00:04 d #2061 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.md.epub; new_path = c:/home/git/vault/dist/data/astronomy/astronomy.md.epub; result = 8307 } 00:00:04 d #2062 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.hangul.md.html; result = 11671 } 00:00:04 i #2063 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astronomy/astronomy.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.md.pdf } 00:00:04 i #2064 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.md.epub } 00:00:04 d #2065 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.md.pdf; new_path = c:/home/git/vault/dist/data/astronomy/astronomy.md.pdf; result = 22461 } 00:00:04 d #2066 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.md.epub; result = 5492 } 00:00:04 i #2067 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astronomy/astronomy.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.md.html } 00:00:04 i #2068 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.md.pdf } 00:00:04 d #2069 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.md.html; new_path = c:/home/git/vault/dist/data/astronomy/astronomy.md.html; result = 22545 } 00:00:04 d #2070 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.md.pdf; result = 4991 } 00:00:04 i #2071 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/astronomy/astronomy.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.hangul.md } 00:00:04 i #2072 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.md.html } 00:00:04 d #2073 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\astronomy.hangul.md; new_path = c:/home/git/vault/dist/data/astronomy/astronomy.hangul.md; result = 12447 } 00:00:04 d #2074 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.md.html; result = 11638 } 00:00:04 i #2075 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.hangul.md } 00:00:04 d #2076 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Yukenzi.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Yukenzi.html.hangul.md; result = 140 } 00:00:04 v #2077 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 d #2078 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/biology/biology.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/biology/biology.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 d #2079 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chores/chores.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chores/chores.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 i #2080 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.hangul.md.epub } 00:00:04 d #2081 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.i574n.hangul.md.epub; result = 5496 } 00:00:04 i #2082 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.hangul.md.pdf } 00:00:04 v #2083 > 'e65dada639871ba283a4d62ff2d2e9b30aef57ca' 00:00:04 d #2084 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.i574n.hangul.md.pdf; result = 4134 } 00:00:04 i #2085 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.hangul.md.html } 00:00:04 d #2086 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.i574n.hangul.md.html; result = 10068 } 00:00:04 v #2087 > cba44947002177d81094bbfcafe46a93f1bdc47e 00:00:04 i #2088 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.md.epub } 00:00:04 d #2089 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.i574n.md.epub; result = 5439 } 00:00:04 i #2090 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.md.pdf } 00:00:04 d #2091 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.i574n.md.pdf; result = 5669 } 00:00:04 i #2092 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.md.html } 00:00:04 d #2093 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.i574n.md.html; result = 10042 } 00:00:04 i #2094 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.hangul.md } 00:00:04 d #2095 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/web3/web3.i574n.hangul.md; result = 88 } 00:00:04 d #2096 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/web3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/web3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2097 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2098 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/music/music.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/music/music.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2099 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2100 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.hangul.md.epub } 00:00:04 v #2101 > 087920199f5f965c9f053b82497e31778239031a 00:00:04 d #2102 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.hangul.md.epub; result = 5562 } 00:00:04 i #2103 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.hangul.md.pdf } 00:00:04 d #2104 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.hangul.md.pdf; result = 4627 } 00:00:04 i #2105 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.hangul.md.html } 00:00:04 d #2106 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.hangul.md.html; result = 11671 } 00:00:04 i #2107 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.md.epub } 00:00:04 d #2108 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.md.epub; result = 5493 } 00:00:04 i #2109 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.md.pdf } 00:00:04 d #2110 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.md.pdf; result = 4849 } 00:00:04 i #2111 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.md.html } 00:00:04 d #2112 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.md.html; new_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.md.html; result = 11642 } 00:00:04 i #2113 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.hangul.md } 00:00:04 d #2114 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kittennmoon.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/kittennmoon.html.hangul.md; result = 140 } 00:00:04 d #2115 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Kitty.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Kitty.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2116 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2117 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.hangul.md.epub } 00:00:04 d #2118 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/drugs/drugs.html.hangul.md.epub; result = 5510 } 00:00:04 i #2119 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.hangul.md.pdf } 00:00:04 d #2120 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/drugs.html.hangul.md.pdf; result = 3786 } 00:00:04 i #2121 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.hangul.md.html } 00:00:04 d #2122 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/drugs/drugs.html.hangul.md.html; result = 10093 } 00:00:04 v #2123 > '92c9bb6b72d94e9bf2f6e28ea3281d059a2f68b7' 00:00:04 i #2124 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.md.epub } 00:00:04 d #2125 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.md.epub; new_path = c:/home/git/vault/dist/data/drugs/drugs.html.md.epub; result = 5445 } 00:00:04 i #2126 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.md.pdf } 00:00:04 d #2127 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/drugs.html.md.pdf; result = 6041 } 00:00:04 i #2128 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.md.html } 00:00:04 d #2129 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.md.html; new_path = c:/home/git/vault/dist/data/drugs/drugs.html.md.html; result = 10060 } 00:00:04 i #2130 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.hangul.md } 00:00:04 d #2131 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.html.hangul.md; new_path = c:/home/git/vault/dist/data/drugs/drugs.html.hangul.md; result = 126 } 00:00:04 d #2132 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/drugs/drugs.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/drugs/drugs.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2133 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2134 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/hardware/hardware.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/hardware/hardware.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2135 > '26120b2e92375b6d6f8185081d4c976c28f37a56' 00:00:04 v #2136 > '6aa5fd3d6fa6bb7f06dc56dc3545d7d1f7a5f269' 00:00:04 v #2137 > 'c260bf13b4742cdacca39c111d4253fb07b1925b' 00:00:04 v #2138 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2139 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/biology/biology.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/biology/biology.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2140 > e65dada639871ba283a4d62ff2d2e9b30aef57ca 00:00:04 v #2141 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2142 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chores/chores.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chores/chores.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2143 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2144 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/web3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/web3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2145 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2146 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.hangul.md.epub } 00:00:04 d #2147 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.hangul.md.epub; new_path = c:/home/git/vault/dist/data/music/music.hangul.md.epub; result = 63431 } 00:00:04 i #2148 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.hangul.md.pdf } 00:00:04 d #2149 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/music/music.hangul.md.pdf; result = 110311 } 00:00:04 i #2150 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.hangul.md.html } 00:00:04 d #2151 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.hangul.md.html; new_path = c:/home/git/vault/dist/data/music/music.hangul.md.html; result = 328105 } 00:00:04 i #2152 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.md.epub } 00:00:04 d #2153 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.md.epub; new_path = c:/home/git/vault/dist/data/music/music.md.epub; result = 57541 } 00:00:04 v #2154 > 'ec8cc309cc04d193ab3779a9a83894281f55c1fb' 00:00:04 i #2155 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.md.pdf } 00:00:04 d #2156 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.md.pdf; new_path = c:/home/git/vault/dist/data/music/music.md.pdf; result = 270103 } 00:00:04 i #2157 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.md.html } 00:00:04 d #2158 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.md.html; new_path = c:/home/git/vault/dist/data/music/music.md.html; result = 234838 } 00:00:04 i #2159 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.hangul.md } 00:00:04 d #2160 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.hangul.md; new_path = c:/home/git/vault/dist/data/music/music.hangul.md; result = 268501 } 00:00:04 d #2161 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/music/music.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/music/music.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2162 > '175166e893681d4a1d3046b5b80ed26e41716f15' 00:00:04 v #2163 > 92c9bb6b72d94e9bf2f6e28ea3281d059a2f68b7 00:00:04 v #2164 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2165 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Kitty.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Kitty.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2166 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2167 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/drugs/drugs.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/drugs/drugs.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2168 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2169 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.hangul.md.epub } 00:00:04 d #2170 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/hardware/hardware.html.hangul.md.epub; result = 5656 } 00:00:04 i #2171 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.hangul.md.pdf } 00:00:04 d #2172 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/hardware/hardware.html.hangul.md.pdf; result = 4853 } 00:00:04 i #2173 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.hangul.md.html } 00:00:04 d #2174 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/hardware/hardware.html.hangul.md.html; result = 10307 } 00:00:04 i #2175 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.md.epub } 00:00:04 d #2176 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.md.epub; new_path = c:/home/git/vault/dist/data/hardware/hardware.html.md.epub; result = 5536 } 00:00:04 i #2177 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.md.pdf } 00:00:04 d #2178 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.md.pdf; new_path = c:/home/git/vault/dist/data/hardware/hardware.html.md.pdf; result = 8059 } 00:00:04 i #2179 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.md.html } 00:00:04 d #2180 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.md.html; new_path = c:/home/git/vault/dist/data/hardware/hardware.html.md.html; result = 10171 } 00:00:04 i #2181 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.hangul.md } 00:00:04 d #2182 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.html.hangul.md; new_path = c:/home/git/vault/dist/data/hardware/hardware.html.hangul.md; result = 339 } 00:00:04 d #2183 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/hardware/hardware.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/hardware/hardware.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2184 > 26120b2e92375b6d6f8185081d4c976c28f37a56 00:00:04 v #2185 > 6aa5fd3d6fa6bb7f06dc56dc3545d7d1f7a5f269 00:00:04 v #2186 > c260bf13b4742cdacca39c111d4253fb07b1925b 00:00:04 v #2187 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2188 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/biology/biology.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.hangul.md.epub } 00:00:04 d #2189 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/biology/biology.mp3.hangul.md.epub; result = 5941 } 00:00:04 v #2190 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2191 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/biology/biology.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.hangul.md.pdf } 00:00:04 d #2192 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/biology/biology.mp3.hangul.md.pdf; result = 4082 } 00:00:04 i #2193 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/biology/biology.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.hangul.md.html } 00:00:04 d #2194 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/biology/biology.mp3.hangul.md.html; result = 11371 } 00:00:04 i #2195 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/biology/biology.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.md.epub } 00:00:04 i #2196 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chores/chores.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chores.hangul.md.epub } 00:00:04 d #2197 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.md.epub; new_path = c:/home/git/vault/dist/data/biology/biology.mp3.md.epub; result = 5715 } 00:00:04 d #2198 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chores.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chores/chores.hangul.md.epub; result = 5381 } 00:00:04 i #2199 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/biology/biology.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.md.pdf } 00:00:04 i #2200 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chores/chores.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chores.hangul.md.pdf } 00:00:04 d #2201 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/biology/biology.mp3.md.pdf; result = 8627 } 00:00:04 i #2202 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/biology/biology.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.md.html } 00:00:04 d #2203 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chores.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chores/chores.hangul.md.pdf; result = 2385 } 00:00:04 i #2204 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chores/chores.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chores.hangul.md.html } 00:00:04 d #2205 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.md.html; new_path = c:/home/git/vault/dist/data/biology/biology.mp3.md.html; result = 10742 } 00:00:04 i #2206 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/biology/biology.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.hangul.md } 00:00:04 d #2207 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chores.hangul.md.html; new_path = c:/home/git/vault/dist/data/chores/chores.hangul.md.html; result = 9904 } 00:00:04 d #2208 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\biology.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/biology/biology.mp3.hangul.md; result = 1308 } 00:00:04 i #2209 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chores/chores.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chores.md.epub } 00:00:04 d #2210 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chores.md.epub; new_path = c:/home/git/vault/dist/data/chores/chores.md.epub; result = 5382 } 00:00:04 v #2211 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2212 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chores/chores.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chores.md.pdf } 00:00:04 d #2213 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chores.md.pdf; new_path = c:/home/git/vault/dist/data/chores/chores.md.pdf; result = 2382 } 00:00:04 i #2214 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chores/chores.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chores.md.html } 00:00:04 d #2215 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chores.md.html; new_path = c:/home/git/vault/dist/data/chores/chores.md.html; result = 9904 } 00:00:04 i #2216 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.hangul.md.epub } 00:00:04 d #2217 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/books/books.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/books/books.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 i #2218 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chores/chores.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chores.hangul.md } 00:00:04 d #2219 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.hangul.md.epub; result = 29771 } 00:00:04 d #2220 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chores.hangul.md; new_path = c:/home/git/vault/dist/data/chores/chores.hangul.md; result = 1783 } 00:00:04 i #2221 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.hangul.md.pdf } 00:00:04 d #2222 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.hangul.md.pdf; result = 38567 } 00:00:04 i #2223 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.hangul.md.html } 00:00:04 d #2224 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.hangul.md.html; result = 134644 } 00:00:04 i #2225 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.md.epub } 00:00:04 d #2226 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/cliparts/avatars.i574n.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/cliparts/avatars.i574n.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 d #2227 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.md.epub; result = 26856 } 00:00:04 i #2228 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.md.pdf } 00:00:04 v #2229 > 'f7379c8f42c2af5f5e2459a6fc92cff0ac9bf1c4' 00:00:04 d #2230 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.md.pdf; result = 116434 } 00:00:04 i #2231 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.md.html } 00:00:04 d #2232 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.md.html; result = 108241 } 00:00:04 i #2233 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.hangul.md } 00:00:04 d #2234 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.hangul.md; new_path = c:/home/git/vault/dist/data/web3/web3.hangul.md; result = 104543 } 00:00:04 d #2235 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/web3/web3.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/web3/web3.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2236 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2237 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/music/music.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/music/music.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2238 > 175166e893681d4a1d3046b5b80ed26e41716f15 00:00:04 v #2239 > ec8cc309cc04d193ab3779a9a83894281f55c1fb 00:00:04 v #2240 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2241 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.hangul.md.epub } 00:00:04 v #2242 > '455601e4dd7acd186e2b720c67ec48013537f743' 00:00:04 v #2243 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 d #2244 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.hangul.md.epub; new_path = c:/home/git/vault/dist/data/drugs/drugs.hangul.md.epub; result = 54555 } 00:00:04 i #2245 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.hangul.md.pdf } 00:00:04 i #2246 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Kitty.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.hangul.md.epub } 00:00:04 d #2247 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/drugs.hangul.md.pdf; result = 59569 } 00:00:04 d #2248 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Kitty.html.hangul.md.epub; result = 5558 } 00:00:04 i #2249 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.hangul.md.html } 00:00:04 i #2250 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Kitty.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.hangul.md.pdf } 00:00:04 d #2251 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Kitty.html.hangul.md.pdf; result = 4628 } 00:00:04 d #2252 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.hangul.md.html; new_path = c:/home/git/vault/dist/data/drugs/drugs.hangul.md.html; result = 208269 } 00:00:04 i #2253 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.md.epub } 00:00:04 i #2254 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Kitty.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.hangul.md.html } 00:00:04 d #2255 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.md.epub; new_path = c:/home/git/vault/dist/data/drugs/drugs.md.epub; result = 47872 } 00:00:04 d #2256 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Kitty.html.hangul.md.html; result = 11668 } 00:00:04 i #2257 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.md.pdf } 00:00:04 i #2257 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Kitty.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.md.epub } 00:00:04 d #2259 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Kitty.html.md.epub; result = 5490 } 00:00:04 d #2260 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/drugs.md.pdf; result = 164323 } 00:00:04 i #2261 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Kitty.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.md.pdf } 00:00:04 i #2262 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.md.html } 00:00:04 d #2263 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Kitty.html.md.pdf; result = 4815 } 00:00:04 i #2264 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Kitty.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.md.html } 00:00:04 d #2265 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.md.html; new_path = c:/home/git/vault/dist/data/drugs/drugs.md.html; result = 142593 } 00:00:04 i #2266 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.hangul.md } 00:00:04 v #2267 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2268 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Kitty.html.md.html; result = 11636 } 00:00:04 i #2269 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Kitty.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.hangul.md } 00:00:04 d #2270 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.hangul.md; new_path = c:/home/git/vault/dist/data/drugs/drugs.hangul.md; result = 186809 } 00:00:04 d #2271 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Kitty.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Kitty.html.hangul.md; result = 137 } 00:00:04 d #2272 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/hardware/hardware.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/hardware/hardware.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 d #2273 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/drugs/drugs.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/drugs/drugs.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 d #2274 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Luckyystrike.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Luckyystrike.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2275 > '5fabbc5009e36457c673ab281ad24ae700224001' 00:00:04 v #2276 > 'bb1dd6b3d5d3aa822489fb2c78a9004391741d72' 00:00:04 v #2277 > 'df377f01f1b9f3670c7a12dc9fdd0acd84916774' 00:00:04 v #2278 > f7379c8f42c2af5f5e2459a6fc92cff0ac9bf1c4 00:00:04 v #2279 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2280 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/books/books.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/books/books.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2281 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2282 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2283 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2284 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/web3/web3.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/web3/web3.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2285 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2286 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.hangul.md.epub } 00:00:04 d #2287 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/music/music.mp3.hangul.md.epub; result = 5919 } 00:00:04 i #2288 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.hangul.md.pdf } 00:00:04 d #2289 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/music/music.mp3.hangul.md.pdf; result = 4580 } 00:00:04 i #2290 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.hangul.md.html } 00:00:04 d #2291 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/music/music.mp3.hangul.md.html; result = 11560 } 00:00:04 i #2292 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.md.epub } 00:00:04 d #2293 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.md.epub; new_path = c:/home/git/vault/dist/data/music/music.mp3.md.epub; result = 5732 } 00:00:04 i #2294 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.md.pdf } 00:00:04 d #2295 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/music/music.mp3.md.pdf; result = 9338 } 00:00:04 i #2296 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.md.html } 00:00:04 d #2297 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.md.html; new_path = c:/home/git/vault/dist/data/music/music.mp3.md.html; result = 10841 } 00:00:04 i #2298 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/music/music.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.hangul.md } 00:00:04 d #2299 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\music.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/music/music.mp3.hangul.md; result = 1497 } 00:00:04 d #2300 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/navigation/navigation.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/navigation/navigation.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2301 > 455601e4dd7acd186e2b720c67ec48013537f743 00:00:04 v #2302 > '9374f730729923ec03218a01780c68bb615491a4' 00:00:04 v #2303 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2304 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.hangul.md.epub } 00:00:04 d #2305 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.hangul.md.epub; new_path = c:/home/git/vault/dist/data/hardware/hardware.hangul.md.epub; result = 12639 } 00:00:04 i #2306 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.hangul.md.pdf } 00:00:04 d #2307 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/hardware/hardware.hangul.md.pdf; result = 17450 } 00:00:04 i #2308 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.hangul.md.html } 00:00:04 d #2309 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.hangul.md.html; new_path = c:/home/git/vault/dist/data/hardware/hardware.hangul.md.html; result = 52886 } 00:00:04 i #2310 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.md.epub } 00:00:04 v #2311 > '0dfb76b4eb66823a9d64e6d9832084838f0931aa' 00:00:04 d #2312 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.md.epub; new_path = c:/home/git/vault/dist/data/hardware/hardware.md.epub; result = 11682 } 00:00:04 i #2313 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.md.pdf } 00:00:04 d #2314 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.md.pdf; new_path = c:/home/git/vault/dist/data/hardware/hardware.md.pdf; result = 48468 } 00:00:04 i #2315 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.md.html } 00:00:04 d #2316 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.md.html; new_path = c:/home/git/vault/dist/data/hardware/hardware.md.html; result = 41164 } 00:00:04 i #2317 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hardware/hardware.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hardware.hangul.md } 00:00:04 d #2318 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hardware.hangul.md; new_path = c:/home/git/vault/dist/data/hardware/hardware.hangul.md; result = 33758 } 00:00:04 v #2319 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2320 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/drugs/drugs.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/drugs/drugs.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 d #2321 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/hip-hop/complexity-and-competition_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/hip-hop/complexity-and-competition_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2322 > 5fabbc5009e36457c673ab281ad24ae700224001 00:00:04 v #2323 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2324 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Luckyystrike.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Luckyystrike.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2325 > bb1dd6b3d5d3aa822489fb2c78a9004391741d72 00:00:04 v #2326 > df377f01f1b9f3670c7a12dc9fdd0acd84916774 00:00:04 v #2327 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2328 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/books/books.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\books.hangul.md.epub } 00:00:04 d #2329 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\books.hangul.md.epub; new_path = c:/home/git/vault/dist/data/books/books.hangul.md.epub; result = 10806 } 00:00:04 i #2330 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/books/books.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\books.hangul.md.pdf } 00:00:04 d #2331 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\books.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/books/books.hangul.md.pdf; result = 11037 } 00:00:04 i #2332 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/books/books.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\books.hangul.md.html } 00:00:04 d #2333 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\books.hangul.md.html; new_path = c:/home/git/vault/dist/data/books/books.hangul.md.html; result = 32966 } 00:00:04 i #2334 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/books/books.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\books.md.epub } 00:00:04 d #2335 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\books.md.epub; new_path = c:/home/git/vault/dist/data/books/books.md.epub; result = 9917 } 00:00:04 i #2336 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/books/books.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\books.md.pdf } 00:00:04 d #2337 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\books.md.pdf; new_path = c:/home/git/vault/dist/data/books/books.md.pdf; result = 28934 } 00:00:04 i #2338 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/books/books.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\books.md.html } 00:00:04 d #2339 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\books.md.html; new_path = c:/home/git/vault/dist/data/books/books.md.html; result = 27228 } 00:00:04 i #2340 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/books/books.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\books.hangul.md } 00:00:04 d #2341 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\books.hangul.md; new_path = c:/home/git/vault/dist/data/books/books.hangul.md; result = 16083 } 00:00:04 v #2342 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 d #2343 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/business/business.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/business/business.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2344 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2345 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.hangul.md.epub } 00:00:04 d #2346 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.pdf.hangul.md.epub; result = 7770 } 00:00:04 i #2347 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.hangul.md.pdf } 00:00:04 d #2348 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.pdf.hangul.md.pdf; result = 7357 } 00:00:04 i #2349 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.hangul.md.html } 00:00:04 i #2350 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.hangul.md.epub } 00:00:04 d #2351 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.pdf.hangul.md.html; result = 19755 } 00:00:04 d #2352 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.hangul.md.epub; result = 5772 } 00:00:04 i #2353 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.md.epub } 00:00:04 i #2354 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.hangul.md.pdf } 00:00:04 d #2355 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.md.epub; new_path = c:/home/git/vault/dist/data/web3/web3.pdf.md.epub; result = 7203 } 00:00:04 d #2356 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.hangul.md.pdf; result = 2201 } 00:00:04 i #2357 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.hangul.md.html } 00:00:04 i #2358 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.md.pdf } 00:00:04 d #2359 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.hangul.md.html; result = 10641 } 00:00:04 i #2360 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.md.epub } 00:00:04 d #2361 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/web3/web3.pdf.md.pdf; result = 15249 } 00:00:04 d #2362 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.md.epub; new_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.md.epub; result = 5633 } 00:00:04 i #2363 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.md.html } 00:00:04 i #2364 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.md.pdf } 00:00:04 v #2365 > '574ee3a652500f3406dab750e9154ce6b4dbc09b' 00:00:04 d #2366 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.md.pdf; new_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.md.pdf; result = 2205 } 00:00:04 d #2367 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.md.html; new_path = c:/home/git/vault/dist/data/web3/web3.pdf.md.html; result = 16626 } 00:00:04 i #2368 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.md.html } 00:00:04 i #2369 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/web3/web3.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.hangul.md } 00:00:04 d #2370 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.md.html; new_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.md.html; result = 10367 } 00:00:04 d #2371 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\web3.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/web3/web3.pdf.hangul.md; result = 8631 } 00:00:04 i #2372 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.hangul.md } 00:00:04 d #2373 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\avatars.i574n.png.hangul.md; new_path = c:/home/git/vault/dist/data/cliparts/avatars.i574n.png.hangul.md; result = 650 } 00:00:04 d #2374 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Blond3B.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Blond3B.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 d #2375 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/cliparts/cliparts.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/cliparts/cliparts.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2376 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2377 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/navigation/navigation.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/navigation/navigation.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2378 > 'e42da5723e601e2eaf26691ae223892b88386727' 00:00:04 v #2379 > 9374f730729923ec03218a01780c68bb615491a4 00:00:04 v #2380 > 0dfb76b4eb66823a9d64e6d9832084838f0931aa 00:00:04 v #2381 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 v #2382 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 i #2383 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.hangul.md.epub } 00:00:04 d #2384 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 d #2385 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.hangul.md.epub; result = 5850 } 00:00:04 i #2386 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.hangul.md.pdf } 00:00:04 d #2387 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.hangul.md.pdf; result = 4357 } 00:00:04 i #2388 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.hangul.md.html } 00:00:04 d #2389 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.hangul.md.html; result = 10998 } 00:00:04 i #2390 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.md.epub } 00:00:04 d #2391 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.md.epub; new_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.md.epub; result = 5676 } 00:00:04 i #2392 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.md.pdf } 00:00:04 d #2393 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.md.pdf; result = 8824 } 00:00:04 i #2394 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.md.html } 00:00:04 d #2395 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.md.html; new_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.md.html; result = 10550 } 00:00:04 i #2396 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.hangul.md } 00:00:04 d #2397 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/drugs/drugs.mp3.hangul.md; result = 982 } 00:00:04 v #2398 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 d #2399 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/drugs/drugs.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/drugs/drugs.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 i #2400 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.hangul.md.epub } 00:00:04 d #2401 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.hangul.md.epub; result = 5562 } 00:00:04 i #2402 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.hangul.md.pdf } 00:00:04 d #2403 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.hangul.md.pdf; result = 4626 } 00:00:04 i #2404 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.hangul.md.html } 00:00:04 d #2405 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.hangul.md.html; result = 11680 } 00:00:04 i #2406 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.md.epub } 00:00:04 d #2407 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.md.epub; result = 5497 } 00:00:04 i #2408 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.md.pdf } 00:00:04 d #2409 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.md.pdf; result = 4868 } 00:00:04 i #2410 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.md.html } 00:00:04 v #2411 > 'd093d5959b1aa80e6844338cdf0a2e38d9846fe6' 00:00:04 d #2412 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.md.html; result = 11643 } 00:00:04 i #2413 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.hangul.md } 00:00:04 d #2414 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Luckyystrike.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Luckyystrike.html.hangul.md; result = 149 } 00:00:04 d #2415 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/mfc.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/mfc.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2416 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2417 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/business/business.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/business/business.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2418 > '3641d1976fdcab1098922b3a808a6893d0dae39b' 00:00:04 v #2419 > '0b2a389931afb82d941ca55444960e145eb5c657' 00:00:04 v #2420 > 574ee3a652500f3406dab750e9154ce6b4dbc09b 00:00:04 v #2421 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 v #2422 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2423 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Blond3B.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Blond3B.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 d #2424 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/cliparts/cliparts.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/cliparts/cliparts.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2425 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2426 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.hangul.md.epub } 00:00:04 d #2427 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/navigation/navigation.html.hangul.md.epub; result = 5832 } 00:00:04 i #2428 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.hangul.md.pdf } 00:00:04 d #2429 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/navigation/navigation.html.hangul.md.pdf; result = 5507 } 00:00:04 i #2430 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.hangul.md.html } 00:00:04 d #2431 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/navigation/navigation.html.hangul.md.html; result = 11755 } 00:00:04 i #2432 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.md.epub } 00:00:04 d #2433 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.md.epub; new_path = c:/home/git/vault/dist/data/navigation/navigation.html.md.epub; result = 5683 } 00:00:04 i #2434 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.md.pdf } 00:00:04 d #2435 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.md.pdf; new_path = c:/home/git/vault/dist/data/navigation/navigation.html.md.pdf; result = 9335 } 00:00:04 i #2436 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.md.html } 00:00:04 d #2437 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.md.html; new_path = c:/home/git/vault/dist/data/navigation/navigation.html.md.html; result = 11414 } 00:00:04 i #2438 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.hangul.md } 00:00:04 d #2439 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.html.hangul.md; new_path = c:/home/git/vault/dist/data/navigation/navigation.html.hangul.md; result = 1226 } 00:00:04 d #2440 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/navigation/navigation.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/navigation/navigation.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2441 > e42da5723e601e2eaf26691ae223892b88386727 00:00:04 v #2442 > '56ee19c0052ec69368954d0186b82fc57768f560' 00:00:04 v #2443 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2444 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.hangul.md.epub } 00:00:04 d #2445 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.hangul.md.epub; result = 40361 } 00:00:04 i #2446 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.hangul.md.pdf } 00:00:04 v #2447 > '851a864bfefadeefdcb491f5c0dc83cd24bafccc' 00:00:04 d #2448 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.hangul.md.pdf; result = 48381 } 00:00:04 i #2449 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.hangul.md.html } 00:00:04 d #2450 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.hangul.md.html; result = 159575 } 00:00:04 i #2451 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.md.epub } 00:00:04 v #2452 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2453 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.md.epub; result = 35705 } 00:00:04 i #2454 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.md.pdf } 00:00:04 d #2455 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.md.pdf; result = 130346 } 00:00:04 d #2456 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/drugs/drugs.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/drugs/drugs.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 i #2457 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.md.html } 00:00:04 d #2458 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.md.html; new_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.md.html; result = 110911 } 00:00:04 i #2459 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.hangul.md } 00:00:04 d #2460 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\complexity-and-competition_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/hip-hop/complexity-and-competition_pt-br.hangul.md; result = 143161 } 00:00:04 v #2461 > d093d5959b1aa80e6844338cdf0a2e38d9846fe6 00:00:04 v #2462 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2463 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/hip-hop/hip-hop.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/hip-hop/hip-hop.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 d #2464 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/mfc.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/mfc.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2465 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2466 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/business/business.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\business.hangul.md.epub } 00:00:04 d #2467 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\business.hangul.md.epub; new_path = c:/home/git/vault/dist/data/business/business.hangul.md.epub; result = 7785 } 00:00:04 i #2468 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/business/business.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\business.hangul.md.pdf } 00:00:04 d #2469 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\business.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/business/business.hangul.md.pdf; result = 6674 } 00:00:04 i #2470 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/business/business.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\business.hangul.md.html } 00:00:04 d #2471 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\business.hangul.md.html; new_path = c:/home/git/vault/dist/data/business/business.hangul.md.html; result = 22627 } 00:00:04 i #2472 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/business/business.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\business.md.epub } 00:00:04 d #2473 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\business.md.epub; new_path = c:/home/git/vault/dist/data/business/business.md.epub; result = 7315 } 00:00:04 i #2474 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/business/business.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\business.md.pdf } 00:00:04 v #2475 > 0b2a389931afb82d941ca55444960e145eb5c657 00:00:04 d #2476 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\business.md.pdf; new_path = c:/home/git/vault/dist/data/business/business.md.pdf; result = 18658 } 00:00:04 i #2477 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/business/business.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\business.md.html } 00:00:04 v #2478 > 3641d1976fdcab1098922b3a808a6893d0dae39b 00:00:04 d #2479 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\business.md.html; new_path = c:/home/git/vault/dist/data/business/business.md.html; result = 19670 } 00:00:04 i #2480 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/business/business.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\business.hangul.md } 00:00:04 d #2481 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\business.hangul.md; new_path = c:/home/git/vault/dist/data/business/business.hangul.md; result = 7972 } 00:00:04 d #2482 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/AdySweet.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/AdySweet.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2483 > '7f916cd510d5f0d2a2850689a5b05a12150a038e' 00:00:04 v #2484 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 v #2485 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2486 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Blond3B.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.hangul.md.epub } 00:00:04 i #2487 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.hangul.md.epub } 00:00:04 d #2488 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Blond3B.html.hangul.md.epub; result = 5564 } 00:00:04 i #2489 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Blond3B.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.hangul.md.pdf } 00:00:04 d #2490 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.hangul.md.epub; result = 5602 } 00:00:04 i #2491 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.hangul.md.pdf } 00:00:04 d #2492 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Blond3B.html.hangul.md.pdf; result = 4796 } 00:00:04 d #2493 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.hangul.md.pdf; result = 4052 } 00:00:04 i #2494 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Blond3B.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.hangul.md.html } 00:00:04 i #2495 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.hangul.md.html } 00:00:04 d #2496 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Blond3B.html.hangul.md.html; result = 11675 } 00:00:04 d #2497 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.hangul.md.html; result = 10765 } 00:00:04 i #2498 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Blond3B.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.md.epub } 00:00:04 i #2499 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.md.epub } 00:00:04 d #2500 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Blond3B.html.md.epub; result = 5492 } 00:00:04 i #2501 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Blond3B.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.md.pdf } 00:00:04 v #2502 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2503 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.md.epub; new_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.md.epub; result = 5497 } 00:00:04 i #2504 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.md.pdf } 00:00:04 d #2505 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Blond3B.html.md.pdf; result = 5107 } 00:00:04 i #2506 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Blond3B.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.md.html } 00:00:04 d #2507 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.md.pdf; new_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.md.pdf; result = 6628 } 00:00:04 i #2508 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.md.html } 00:00:04 d #2509 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Blond3B.html.md.html; result = 11638 } 00:00:04 d #2510 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/navigation/navigation.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/navigation/navigation.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 i #2511 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Blond3B.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.hangul.md } 00:00:04 d #2512 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.md.html; new_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.md.html; result = 10614 } 00:00:04 i #2513 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.hangul.md } 00:00:04 d #2514 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Blond3B.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Blond3B.html.hangul.md; result = 144 } 00:00:04 d #2515 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cliparts.html.hangul.md; new_path = c:/home/git/vault/dist/data/cliparts/cliparts.html.hangul.md; result = 531 } 00:00:04 d #2516 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Brithanybrown.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Brithanybrown.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 d #2517 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/clojure/clojure.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/clojure/clojure.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2518 > 56ee19c0052ec69368954d0186b82fc57768f560 00:00:04 v #2519 > 851a864bfefadeefdcb491f5c0dc83cd24bafccc 00:00:04 v #2520 > '01521afcb2137c1e764ac68f071a5d357f1fd11b' 00:00:04 v #2521 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2522 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.hangul.md.epub } 00:00:04 d #2523 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.hangul.md.epub; result = 5722 } 00:00:04 i #2524 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.hangul.md.pdf } 00:00:04 v #2525 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 d #2526 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.hangul.md.pdf; result = 5145 } 00:00:04 v #2527 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 i #2528 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.hangul.md.html } 00:00:04 d #2529 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.hangul.md.html; result = 10407 } 00:00:04 i #2530 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.md.epub } 00:00:04 i #2531 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/mfc.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.hangul.md.epub } 00:00:04 d #2532 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.md.epub; new_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.md.epub; result = 5587 } 00:00:04 i #2533 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.md.pdf } 00:00:04 d #2534 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/mfc.html.hangul.md.epub; result = 5614 } 00:00:04 d #2535 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/hip-hop/hip-hop.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/hip-hop/hip-hop.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 i #2536 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/mfc.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.hangul.md.pdf } 00:00:04 d #2537 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.md.pdf; result = 8434 } 00:00:04 i #2538 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.md.html } 00:00:04 d #2539 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/mfc.html.hangul.md.pdf; result = 4805 } 00:00:04 d #2540 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.md.html; new_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.md.html; result = 10256 } 00:00:04 i #2541 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/mfc.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.hangul.md.html } 00:00:04 i #2542 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.hangul.md } 00:00:04 d #2543 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\drugs.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/drugs/drugs.pdf.hangul.md; result = 419 } 00:00:04 d #2544 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/mfc.html.hangul.md.html; result = 12575 } 00:00:04 i #2545 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/mfc.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.md.epub } 00:00:04 d #2546 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/mfc.html.md.epub; result = 5535 } 00:00:04 i #2547 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/mfc.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.md.pdf } 00:00:04 d #2548 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/mfc.html.md.pdf; result = 5546 } 00:00:04 i #2549 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/mfc.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.md.html } 00:00:04 d #2550 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/drugs/selva-verde_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/drugs/selva-verde_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 d #2551 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.md.html; new_path = c:/home/git/vault/dist/data/chat/mfc.html.md.html; result = 12399 } 00:00:04 i #2552 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/mfc.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.hangul.md } 00:00:04 d #2553 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\mfc.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/mfc.html.hangul.md; result = 1452 } 00:00:04 v #2554 > '4ce4e5578a3377ea45aed9218cb0005a22029bbb' 00:00:04 d #2555 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Missbaby8.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Missbaby8.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:04 v #2556 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 d #2557 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/AdySweet.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/AdySweet.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:04 v #2558 > 7f916cd510d5f0d2a2850689a5b05a12150a038e 00:00:04 v #2559 > 'bfe889588e28b8b54bc764337bfaa7907cb8ff0d' 00:00:04 v #2560 > 'caed1cfb27dd8ad27c8e5bc20c0479b30b30b655' 00:00:04 v #2561 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:04 i #2562 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.hangul.md.epub } 00:00:04 d #2563 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/navigation/navigation.png.hangul.md.epub; result = 5585 } 00:00:04 i #2564 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.hangul.md.pdf } 00:00:04 d #2565 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/navigation/navigation.png.hangul.md.pdf; result = 2204 } 00:00:04 i #2566 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.hangul.md.html } 00:00:04 d #2567 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/navigation/navigation.png.hangul.md.html; result = 10177 } 00:00:04 i #2568 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.md.epub } 00:00:04 d #2569 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.md.epub; new_path = c:/home/git/vault/dist/data/navigation/navigation.png.md.epub; result = 5494 } 00:00:04 i #2570 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.md.pdf } 00:00:04 d #2571 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.md.pdf; new_path = c:/home/git/vault/dist/data/navigation/navigation.png.md.pdf; result = 2203 } 00:00:04 i #2572 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.md.html } 00:00:04 d #2573 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.md.html; new_path = c:/home/git/vault/dist/data/navigation/navigation.png.md.html; result = 10078 } 00:00:04 i #2574 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/navigation/navigation.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.hangul.md } 00:00:04 d #2575 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\navigation.png.hangul.md; new_path = c:/home/git/vault/dist/data/navigation/navigation.png.hangul.md; result = 239 } 00:00:04 v #2576 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:04 v #2577 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2578 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Brithanybrown.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Brithanybrown.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 d #2579 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/nix/nix.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/nix/nix.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 d #2580 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/clojure/clojure.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/clojure/clojure.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #2581 > 01521afcb2137c1e764ac68f071a5d357f1fd11b 00:00:05 v #2582 > '87fa470e327b8b916b9ee66974d7484564cde79c' 00:00:05 v #2583 > 4ce4e5578a3377ea45aed9218cb0005a22029bbb 00:00:05 v #2584 > '0a6f0097bf5c439e2a73990bdd489709029ecc19' 00:00:05 v #2585 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #2586 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.hangul.md.epub } 00:00:05 d #2587 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.hangul.md.epub; new_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.hangul.md.epub; result = 204399 } 00:00:05 i #2588 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.hangul.md.pdf } 00:00:05 v #2589 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2590 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.hangul.md.pdf; result = 218135 } 00:00:05 i #2591 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.hangul.md.html } 00:00:05 d #2592 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Missbaby8.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Missbaby8.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 d #2593 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.hangul.md.html; new_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.hangul.md.html; result = 901844 } 00:00:05 i #2594 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.md.epub } 00:00:05 d #2595 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.md.epub; new_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.md.epub; result = 180054 } 00:00:05 i #2596 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.md.pdf } 00:00:05 v #2597 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 d #2598 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.md.pdf; new_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.md.pdf; result = 629891 } 00:00:05 i #2599 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.md.html } 00:00:05 i #2600 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AdySweet.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.hangul.md.epub } 00:00:05 v #2601 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2602 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.md.html; new_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.md.html; result = 632523 } 00:00:05 d #2602 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/AdySweet.html.hangul.md.epub; result = 5566 } 00:00:05 i #2604 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AdySweet.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.hangul.md.pdf } 00:00:05 i #2605 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.hangul.md } 00:00:05 d #2606 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/AdySweet.html.hangul.md.pdf; result = 4627 } 00:00:05 i #2607 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AdySweet.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.hangul.md.html } 00:00:05 v #2608 > bfe889588e28b8b54bc764337bfaa7907cb8ff0d 00:00:05 d #2609 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 d #2610 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/AdySweet.html.hangul.md.html; result = 11677 } 00:00:05 i #2611 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AdySweet.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.md.epub } 00:00:05 d #2612 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hip-hop.hangul.md; new_path = c:/home/git/vault/dist/data/hip-hop/hip-hop.hangul.md; result = 795535 } 00:00:05 d #2613 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/AdySweet.html.md.epub; result = 5493 } 00:00:05 i #2614 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AdySweet.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.md.pdf } 00:00:05 d #2615 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/AdySweet.html.md.pdf; result = 5069 } 00:00:05 i #2616 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AdySweet.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.md.html } 00:00:05 d #2617 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.md.html; new_path = c:/home/git/vault/dist/data/chat/AdySweet.html.md.html; result = 11639 } 00:00:05 i #2618 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AdySweet.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.hangul.md } 00:00:05 d #2619 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/history/history.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/history/history.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 d #2620 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AdySweet.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/AdySweet.html.hangul.md; result = 146 } 00:00:05 v #2621 > caed1cfb27dd8ad27c8e5bc20c0479b30b30b655 00:00:05 d #2622 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/aliceisonfire.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/aliceisonfire.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2623 > '850aeca2369ebf42613d2a00e1c7854f9693c49f' 00:00:05 v #2624 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #2625 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.hangul.md.epub } 00:00:05 d #2626 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.hangul.md.epub; result = 5568 } 00:00:05 i #2627 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.hangul.md.pdf } 00:00:05 d #2628 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.hangul.md.pdf; result = 4622 } 00:00:05 i #2629 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.hangul.md.html } 00:00:05 d #2630 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.hangul.md.html; result = 11680 } 00:00:05 i #2631 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.md.epub } 00:00:05 v #2632 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 d #2633 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.md.epub; result = 5494 } 00:00:05 i #2634 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.md.pdf } 00:00:05 d #2635 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.md.pdf; result = 5065 } 00:00:05 i #2636 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.md.html } 00:00:05 i #2637 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/clojure/clojure.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\clojure.hangul.md.epub } 00:00:05 d #2638 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.md.html; result = 11644 } 00:00:05 d #2639 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\clojure.hangul.md.epub; new_path = c:/home/git/vault/dist/data/clojure/clojure.hangul.md.epub; result = 6690 } 00:00:05 i #2640 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.hangul.md } 00:00:05 i #2641 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/clojure/clojure.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\clojure.hangul.md.pdf } 00:00:05 d #2642 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Brithanybrown.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Brithanybrown.html.hangul.md; result = 149 } 00:00:05 v #2643 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2644 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\clojure.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/clojure/clojure.hangul.md.pdf; result = 8671 } 00:00:05 i #2645 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/clojure/clojure.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\clojure.hangul.md.html } 00:00:05 d #2646 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Cherrycute666.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Cherrycute666.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 d #2647 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/nix/nix.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/nix/nix.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 d #2648 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\clojure.hangul.md.html; new_path = c:/home/git/vault/dist/data/clojure/clojure.hangul.md.html; result = 14366 } 00:00:05 i #2649 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/clojure/clojure.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\clojure.md.epub } 00:00:05 d #2650 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\clojure.md.epub; new_path = c:/home/git/vault/dist/data/clojure/clojure.md.epub; result = 6846 } 00:00:05 i #2651 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/clojure/clojure.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\clojure.md.pdf } 00:00:05 d #2652 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\clojure.md.pdf; new_path = c:/home/git/vault/dist/data/clojure/clojure.md.pdf; result = 27567 } 00:00:05 i #2653 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/clojure/clojure.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\clojure.md.html } 00:00:05 d #2654 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\clojure.md.html; new_path = c:/home/git/vault/dist/data/clojure/clojure.md.html; result = 25746 } 00:00:05 i #2655 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/clojure/clojure.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\clojure.hangul.md } 00:00:05 d #2656 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\clojure.hangul.md; new_path = c:/home/git/vault/dist/data/clojure/clojure.hangul.md; result = 3603 } 00:00:05 d #2657 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/community/community.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/community/community.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2658 > 87fa470e327b8b916b9ee66974d7484564cde79c 00:00:05 v #2659 > 0a6f0097bf5c439e2a73990bdd489709029ecc19 00:00:05 v #2660 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #2661 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.hangul.md.epub } 00:00:05 d #2662 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.hangul.md.epub; result = 5561 } 00:00:05 i #2663 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.hangul.md.pdf } 00:00:05 d #2664 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.hangul.md.pdf; result = 4776 } 00:00:05 i #2665 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.hangul.md.html } 00:00:05 d #2666 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.hangul.md.html; result = 11675 } 00:00:05 i #2667 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.md.epub } 00:00:05 d #2668 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.md.epub; result = 5494 } 00:00:05 i #2669 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.md.pdf } 00:00:05 v #2669 > '56ff044e3443dc01d62c5d2f0f72ea826c4dacb1' 00:00:05 d #2671 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.md.pdf; result = 5044 } 00:00:05 i #2672 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.md.html } 00:00:05 v #2673 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 d #2674 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.md.html; result = 11640 } 00:00:05 i #2675 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.hangul.md } 00:00:05 d #2676 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Missbaby8.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Missbaby8.html.hangul.md; result = 144 } 00:00:05 i #2677 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.hangul.md.epub } 00:00:05 d #2678 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.hangul.md.epub; result = 32678 } 00:00:05 i #2679 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.hangul.md.pdf } 00:00:05 d #2680 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/MissLullu.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/MissLullu.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 d #2681 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.hangul.md.pdf; result = 33909 } 00:00:05 i #2682 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.hangul.md.html } 00:00:05 d #2683 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.hangul.md.html; result = 116541 } 00:00:05 i #2684 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.md.epub } 00:00:05 v #2685 > 'f02b7d2b818094bb639b99d4d551937178eedb00' 00:00:05 d #2686 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.md.epub; result = 28816 } 00:00:05 i #2687 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.md.pdf } 00:00:05 d #2688 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.md.pdf; result = 96826 } 00:00:05 i #2689 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.md.html } 00:00:05 d #2690 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.md.html; new_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.md.html; result = 81574 } 00:00:05 i #2691 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.hangul.md } 00:00:05 v #2691 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2693 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\selva-verde_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/drugs/selva-verde_pt-br.hangul.md; result = 102468 } 00:00:05 d #2694 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/history/history.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/history/history.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 d #2695 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/economy/만리마속도_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/economy/만리마속도_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2696 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 v #2697 > 850aeca2369ebf42613d2a00e1c7854f9693c49f 00:00:05 v #2698 > '604f45424a71a705f768723ab6fed300b025f600' 00:00:05 d #2699 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/aliceisonfire.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/aliceisonfire.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #2700 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 v #2701 > '15350531c1b6540ade3842d1ffa6cbaf1c0b8763' 00:00:05 d #2702 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Cherrycute666.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Cherrycute666.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #2703 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #2704 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.hangul.md.epub } 00:00:05 d #2705 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/nix/nix.html.hangul.md.epub; result = 5549 } 00:00:05 i #2706 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.hangul.md.pdf } 00:00:05 d #2707 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/nix/nix.html.hangul.md.pdf; result = 3963 } 00:00:05 i #2708 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.hangul.md.html } 00:00:05 d #2709 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/nix/nix.html.hangul.md.html; result = 10141 } 00:00:05 i #2710 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.md.epub } 00:00:05 d #2711 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.md.epub; new_path = c:/home/git/vault/dist/data/nix/nix.html.md.epub; result = 5463 } 00:00:05 i #2712 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.md.pdf } 00:00:05 d #2713 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.md.pdf; new_path = c:/home/git/vault/dist/data/nix/nix.html.md.pdf; result = 6226 } 00:00:05 i #2714 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.md.html } 00:00:05 d #2715 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.md.html; new_path = c:/home/git/vault/dist/data/nix/nix.html.md.html; result = 10087 } 00:00:05 i #2716 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.hangul.md } 00:00:05 d #2717 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.html.hangul.md; new_path = c:/home/git/vault/dist/data/nix/nix.html.hangul.md; result = 174 } 00:00:05 d #2718 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/nix/nix.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/nix/nix.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2719 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2720 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/community/community.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/community/community.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #2721 > '141f277c8dfa9ad52a25295c5e3a11a62ee6e3ef' 00:00:05 v #2722 > 56ff044e3443dc01d62c5d2f0f72ea826c4dacb1 00:00:05 v #2723 > f02b7d2b818094bb639b99d4d551937178eedb00 00:00:05 v #2724 > 'ac4e96ed15d66d20d52a5acd366302ee1fa2c75c' 00:00:05 v #2725 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2726 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/MissLullu.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/MissLullu.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #2727 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 v #2728 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #2729 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.hangul.md.epub } 00:00:05 i #2730 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.hangul.md.epub } 00:00:05 d #2731 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.hangul.md.epub; result = 5566 } 00:00:05 d #2731 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.hangul.md.epub; new_path = c:/home/git/vault/dist/data/history/history.hangul.md.epub; result = 12772 } 00:00:05 i #2733 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.hangul.md.pdf } 00:00:05 i #2734 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.hangul.md.pdf } 00:00:05 d #2735 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.hangul.md.pdf; result = 4626 } 00:00:05 i #2736 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.hangul.md.html } 00:00:05 v #2737 > 604f45424a71a705f768723ab6fed300b025f600 00:00:05 d #2738 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/history/history.hangul.md.pdf; result = 13016 } 00:00:05 d #2739 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.hangul.md.html; result = 11683 } 00:00:05 i #2740 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.hangul.md.html } 00:00:05 i #2741 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.md.epub } 00:00:05 v #2742 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2743 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.hangul.md.html; new_path = c:/home/git/vault/dist/data/history/history.hangul.md.html; result = 39849 } 00:00:05 d #2744 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.md.epub; result = 5494 } 00:00:05 i #2745 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.md.pdf } 00:00:05 i #2746 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.md.epub } 00:00:05 d #2747 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.md.pdf; result = 4766 } 00:00:05 d #2748 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.md.epub; new_path = c:/home/git/vault/dist/data/history/history.md.epub; result = 11762 } 00:00:05 i #2749 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.md.html } 00:00:05 d #2750 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/economy/만리마속도_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/economy/만리마속도_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 i #2751 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.md.pdf } 00:00:05 d #2752 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.md.html; new_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.md.html; result = 11644 } 00:00:05 d #2753 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.md.pdf; new_path = c:/home/git/vault/dist/data/history/history.md.pdf; result = 34189 } 00:00:05 i #2754 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.md.html } 00:00:05 i #2755 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.hangul.md } 00:00:05 d #2756 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\aliceisonfire.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/aliceisonfire.html.hangul.md; result = 152 } 00:00:05 d #2757 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.md.html; new_path = c:/home/git/vault/dist/data/history/history.md.html; result = 31531 } 00:00:05 i #2758 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.hangul.md } 00:00:05 d #2759 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.hangul.md; new_path = c:/home/git/vault/dist/data/history/history.hangul.md; result = 23503 } 00:00:05 d #2760 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Angrykat.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Angrykat.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 d #2761 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/history/history.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/history/history.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2762 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #2763 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.hangul.md.epub } 00:00:05 d #2764 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.hangul.md.epub; result = 5568 } 00:00:05 i #2765 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.hangul.md.pdf } 00:00:05 d #2766 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.hangul.md.pdf; result = 4773 } 00:00:05 i #2767 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.hangul.md.html } 00:00:05 v #2768 > 15350531c1b6540ade3842d1ffa6cbaf1c0b8763 00:00:05 d #2769 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.hangul.md.html; result = 11677 } 00:00:05 i #2770 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.md.epub } 00:00:05 d #2771 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.md.epub; result = 5495 } 00:00:05 i #2772 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.md.pdf } 00:00:05 d #2773 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.md.pdf; result = 4954 } 00:00:05 i #2774 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.md.html } 00:00:05 d #2775 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.md.html; result = 11644 } 00:00:05 i #2776 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.hangul.md } 00:00:05 v #2777 > '794396ca6498adbc3ebe3cce207803372f34e562' 00:00:05 d #2778 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Cherrycute666.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Cherrycute666.html.hangul.md; result = 146 } 00:00:05 d #2779 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/chloewildd.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/chloewildd.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2780 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 v #2781 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 d #2782 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/nix/nix.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/nix/nix.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 i #2783 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/community.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\community.hangul.md.epub } 00:00:05 d #2784 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\community.hangul.md.epub; new_path = c:/home/git/vault/dist/data/community/community.hangul.md.epub; result = 12867 } 00:00:05 i #2785 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/community.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\community.hangul.md.pdf } 00:00:05 d #2786 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\community.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/community/community.hangul.md.pdf; result = 13134 } 00:00:05 i #2787 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/community.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\community.hangul.md.html } 00:00:05 d #2788 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\community.hangul.md.html; new_path = c:/home/git/vault/dist/data/community/community.hangul.md.html; result = 44767 } 00:00:05 i #2789 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/community.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\community.md.epub } 00:00:05 d #2790 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\community.md.epub; new_path = c:/home/git/vault/dist/data/community/community.md.epub; result = 11864 } 00:00:05 i #2791 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/community.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\community.md.pdf } 00:00:05 d #2792 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\community.md.pdf; new_path = c:/home/git/vault/dist/data/community/community.md.pdf; result = 36091 } 00:00:05 i #2793 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/community.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\community.md.html } 00:00:05 d #2794 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\community.md.html; new_path = c:/home/git/vault/dist/data/community/community.md.html; result = 34745 } 00:00:05 i #2795 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/community.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\community.hangul.md } 00:00:05 d #2796 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\community.hangul.md; new_path = c:/home/git/vault/dist/data/community/community.hangul.md; result = 28240 } 00:00:05 d #2797 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/community/netiquette_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/community/netiquette_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2798 > 141f277c8dfa9ad52a25295c5e3a11a62ee6e3ef 00:00:05 v #2799 > ac4e96ed15d66d20d52a5acd366302ee1fa2c75c 00:00:05 v #2800 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #2801 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/MissLullu.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.hangul.md.epub } 00:00:05 v #2802 > 'b61ba948805fe014979b6a8ed1873009ba516603' 00:00:05 d #2803 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/MissLullu.html.hangul.md.epub; result = 5561 } 00:00:05 i #2804 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/MissLullu.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.hangul.md.pdf } 00:00:05 d #2805 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/MissLullu.html.hangul.md.pdf; result = 4625 } 00:00:05 i #2806 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/MissLullu.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.hangul.md.html } 00:00:05 v #2807 > '299c44f77ebc021b85ead370f66e763056c1a5a7' 00:00:05 d #2808 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/MissLullu.html.hangul.md.html; result = 11674 } 00:00:05 i #2809 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/MissLullu.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.md.epub } 00:00:05 d #2810 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/MissLullu.html.md.epub; result = 5495 } 00:00:05 i #2811 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/MissLullu.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.md.pdf } 00:00:05 d #2812 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/MissLullu.html.md.pdf; result = 4937 } 00:00:05 i #2813 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/MissLullu.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.md.html } 00:00:05 d #2814 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.md.html; new_path = c:/home/git/vault/dist/data/chat/MissLullu.html.md.html; result = 11640 } 00:00:05 i #2815 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/MissLullu.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.hangul.md } 00:00:05 d #2816 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\MissLullu.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/MissLullu.html.hangul.md; result = 146 } 00:00:05 v #2817 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 v #2818 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2819 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/NicolePowell.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/NicolePowell.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 i #2820 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.hangul.md.epub } 00:00:05 d #2821 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/history/history.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/history/history.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #2822 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2823 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.hangul.md.epub; result = 319445 } 00:00:05 i #2824 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.hangul.md.pdf } 00:00:05 d #2825 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Angrykat.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Angrykat.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 d #2826 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.hangul.md.pdf; result = 331490 } 00:00:05 i #2827 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.hangul.md.html } 00:00:05 d #2828 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.hangul.md.html; result = 1335933 } 00:00:05 i #2829 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.md.epub } 00:00:05 d #2830 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.md.epub; result = 279819 } 00:00:05 i #2831 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.md.pdf } 00:00:05 v #2832 > '25c26fa1ad03412a9ab4e2fea6b2f2f86c3cca3a' 00:00:05 d #2833 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.md.pdf; result = 977530 } 00:00:05 i #2834 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.md.html } 00:00:05 d #2835 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.md.html; new_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.md.html; result = 903159 } 00:00:05 i #2836 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.hangul.md } 00:00:05 d #2837 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\만리마속도_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/economy/만리마속도_pt-br.hangul.md; result = 1272473 } 00:00:05 d #2838 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/engineering/engineering.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/engineering/engineering.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2839 > 794396ca6498adbc3ebe3cce207803372f34e562 00:00:05 v #2840 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2841 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/chloewildd.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/chloewildd.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #2842 > '5c6998de94bbf4d6ccad1953040679ff190118cb' 00:00:05 v #2843 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #2844 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.hangul.md.epub } 00:00:05 d #2845 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.hangul.md.epub; new_path = c:/home/git/vault/dist/data/nix/nix.hangul.md.epub; result = 6895 } 00:00:05 i #2846 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.hangul.md.pdf } 00:00:05 d #2847 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/nix/nix.hangul.md.pdf; result = 3972 } 00:00:05 i #2848 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.hangul.md.html } 00:00:05 d #2849 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.hangul.md.html; new_path = c:/home/git/vault/dist/data/nix/nix.hangul.md.html; result = 14287 } 00:00:05 i #2850 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.md.epub } 00:00:05 d #2851 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.md.epub; new_path = c:/home/git/vault/dist/data/nix/nix.md.epub; result = 6492 } 00:00:05 i #2852 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.md.pdf } 00:00:05 v #2853 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2854 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.md.pdf; new_path = c:/home/git/vault/dist/data/nix/nix.md.pdf; result = 10284 } 00:00:05 i #2855 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.md.html } 00:00:05 d #2856 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.md.html; new_path = c:/home/git/vault/dist/data/nix/nix.md.html; result = 12802 } 00:00:05 i #2857 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/nix/nix.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\nix.hangul.md } 00:00:05 d #2858 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\nix.hangul.md; new_path = c:/home/git/vault/dist/data/nix/nix.hangul.md; result = 4096 } 00:00:05 d #2859 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/community/netiquette_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/community/netiquette_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 d #2860 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/numbers/numbers.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/numbers/numbers.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2861 > 299c44f77ebc021b85ead370f66e763056c1a5a7 00:00:05 v #2862 > '668f5e089fc908abc6eb2a47b2ff61beb7cb633f' 00:00:05 v #2863 > b61ba948805fe014979b6a8ed1873009ba516603 00:00:05 v #2864 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 v #2865 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 i #2866 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Angrykat.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.hangul.md.epub } 00:00:05 d #2867 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/NicolePowell.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/NicolePowell.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 d #2868 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Angrykat.html.hangul.md.epub; result = 5563 } 00:00:05 v #2869 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #2870 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Angrykat.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.hangul.md.pdf } 00:00:05 d #2871 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Angrykat.html.hangul.md.pdf; result = 4626 } 00:00:05 v #2872 > 'e0edc596c7417feeaacdbf3ea04a7b3e05048dd5' 00:00:05 i #2873 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Angrykat.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.hangul.md.html } 00:00:05 i #2874 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.hangul.md.epub } 00:00:05 d #2875 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Angrykat.html.hangul.md.html; result = 11677 } 00:00:05 i #2876 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Angrykat.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.md.epub } 00:00:05 d #2877 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/history/history.mp3.hangul.md.epub; result = 6081 } 00:00:05 i #2878 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.hangul.md.pdf } 00:00:05 d #2879 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Angrykat.html.md.epub; result = 5492 } 00:00:05 i #2880 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Angrykat.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.md.pdf } 00:00:05 d #2881 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/history/history.mp3.hangul.md.pdf; result = 4473 } 00:00:05 i #2882 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.hangul.md.html } 00:00:05 v #2883 > 25c26fa1ad03412a9ab4e2fea6b2f2f86c3cca3a 00:00:05 d #2884 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Angrykat.html.md.pdf; result = 4963 } 00:00:05 d #2885 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/history/history.mp3.hangul.md.html; result = 11788 } 00:00:05 i #2886 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Angrykat.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.md.html } 00:00:05 i #2887 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.md.epub } 00:00:05 d #2888 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Angrykat.html.md.html; result = 11639 } 00:00:05 i #2889 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Angrykat.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.hangul.md } 00:00:05 d #2890 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.md.epub; new_path = c:/home/git/vault/dist/data/history/history.mp3.md.epub; result = 5829 } 00:00:05 i #2891 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.md.pdf } 00:00:05 d #2892 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Angrykat.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Angrykat.html.hangul.md; result = 147 } 00:00:05 d #2893 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/history/history.mp3.md.pdf; result = 9793 } 00:00:05 i #2894 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.md.html } 00:00:05 d #2895 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.md.html; new_path = c:/home/git/vault/dist/data/history/history.mp3.md.html; result = 10988 } 00:00:05 i #2896 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/history/history.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.hangul.md } 00:00:05 d #2897 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\history.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/history/history.mp3.hangul.md; result = 1679 } 00:00:05 d #2898 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/AubriToffee.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/AubriToffee.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 d #2899 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/hunting/hunting.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/hunting/hunting.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2900 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2901 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/engineering/engineering.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/engineering/engineering.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #2902 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #2903 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/chloewildd.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.hangul.md.epub } 00:00:05 d #2904 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/chloewildd.html.hangul.md.epub; result = 5567 } 00:00:05 i #2905 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/chloewildd.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.hangul.md.pdf } 00:00:05 d #2906 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/chloewildd.html.hangul.md.pdf; result = 4626 } 00:00:05 i #2907 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/chloewildd.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.hangul.md.html } 00:00:05 d #2908 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/chloewildd.html.hangul.md.html; result = 11676 } 00:00:05 i #2909 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/chloewildd.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.md.epub } 00:00:05 d #2910 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/chloewildd.html.md.epub; result = 5488 } 00:00:05 i #2911 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/chloewildd.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.md.pdf } 00:00:05 d #2912 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/chloewildd.html.md.pdf; result = 4998 } 00:00:05 i #2913 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/chloewildd.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.md.html } 00:00:05 v #2914 > 5c6998de94bbf4d6ccad1953040679ff190118cb 00:00:05 d #2915 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.md.html; new_path = c:/home/git/vault/dist/data/chat/chloewildd.html.md.html; result = 11636 } 00:00:05 i #2916 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/chloewildd.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.hangul.md } 00:00:05 d #2917 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\chloewildd.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/chloewildd.html.hangul.md; result = 146 } 00:00:05 v #2918 > 'a1a5b3322c5350a719f7986e9d4ae98c35eee5b4' 00:00:05 d #2919 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Dakota_Blare.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Dakota_Blare.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2920 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 v #2921 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 d #2922 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/numbers/numbers.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/numbers/numbers.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 i #2923 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.hangul.md.epub } 00:00:05 d #2924 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.hangul.md.epub; result = 23770 } 00:00:05 i #2925 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.hangul.md.pdf } 00:00:05 d #2926 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.hangul.md.pdf; result = 22472 } 00:00:05 i #2927 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.hangul.md.html } 00:00:05 d #2928 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.hangul.md.html; result = 85534 } 00:00:05 i #2929 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.md.epub } 00:00:05 d #2930 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.md.epub; result = 21832 } 00:00:05 i #2931 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.md.pdf } 00:00:05 d #2932 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.md.pdf; result = 56670 } 00:00:05 i #2933 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.md.html } 00:00:05 d #2934 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.md.html; new_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.md.html; result = 64583 } 00:00:05 i #2935 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.hangul.md } 00:00:05 v #2936 > 668f5e089fc908abc6eb2a47b2ff61beb7cb633f 00:00:05 d #2937 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\netiquette_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/community/netiquette_pt-br.hangul.md; result = 65402 } 00:00:05 d #2938 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/compilers/compilers.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/compilers/compilers.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2939 > e0edc596c7417feeaacdbf3ea04a7b3e05048dd5 00:00:05 v #2940 > 'f8e5972d7a116efc09e6f689052a2c00ef110f18' 00:00:05 v #2941 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 v #2942 > 'c7a57567fdf7ab3fb89bd268224cfdf5f8dadc9f' 00:00:05 v #2943 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #2944 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.hangul.md.epub } 00:00:05 d #2945 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.hangul.md.epub; result = 5567 } 00:00:05 i #2946 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.hangul.md.pdf } 00:00:05 i #2947 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.hangul.md.epub } 00:00:05 d #2948 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.hangul.md.pdf; result = 4623 } 00:00:05 i #2949 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.hangul.md.html } 00:00:05 d #2950 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.hangul.md.epub; result = 5645 } 00:00:05 i #2951 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.hangul.md.pdf } 00:00:05 d #2952 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.hangul.md.html; result = 11680 } 00:00:05 i #2953 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.md.epub } 00:00:05 v #2954 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2955 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.hangul.md.pdf; result = 3990 } 00:00:05 i #2956 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.hangul.md.html } 00:00:05 d #2957 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.md.epub; result = 5495 } 00:00:05 i #2958 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.md.pdf } 00:00:05 d #2959 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.md.pdf; result = 5026 } 00:00:05 i #2960 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.md.html } 00:00:05 d #2961 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.hangul.md.html; result = 10278 } 00:00:05 i #2962 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.md.epub } 00:00:05 d #2963 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.md.html; new_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.md.html; result = 11643 } 00:00:05 d #2964 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.md.epub; new_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.md.epub; result = 5525 } 00:00:05 i #2965 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.hangul.md } 00:00:05 i #2966 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.md.pdf } 00:00:05 d #2967 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/AubriToffee.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/AubriToffee.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 d #2968 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\NicolePowell.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/NicolePowell.html.hangul.md; result = 149 } 00:00:05 d #2969 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.md.pdf; result = 7540 } 00:00:05 i #2970 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.md.html } 00:00:05 d #2971 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.md.html; new_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.md.html; result = 10118 } 00:00:05 i #2972 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.hangul.md } 00:00:05 d #2973 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\engineering.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/engineering/engineering.mp3.hangul.md; result = 353 } 00:00:05 d #2974 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Olivia.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Olivia.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 d #2975 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/ethics/ethics.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/ethics/ethics.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2976 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2977 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/hunting/hunting.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/hunting/hunting.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #2978 > '33241bf308571f30a46d2ef4af47882bd6d76c2c' 00:00:05 v #2979 > a1a5b3322c5350a719f7986e9d4ae98c35eee5b4 00:00:05 v #2980 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #2981 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Dakota_Blare.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Dakota_Blare.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #2982 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #2983 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/numbers/numbers.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\numbers.hangul.md.epub } 00:00:05 d #2984 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\numbers.hangul.md.epub; new_path = c:/home/git/vault/dist/data/numbers/numbers.hangul.md.epub; result = 6316 } 00:00:05 i #2985 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/numbers/numbers.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\numbers.hangul.md.pdf } 00:00:05 d #2986 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\numbers.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/numbers/numbers.hangul.md.pdf; result = 8509 } 00:00:05 i #2987 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/numbers/numbers.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\numbers.hangul.md.html } 00:00:05 d #2988 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\numbers.hangul.md.html; new_path = c:/home/git/vault/dist/data/numbers/numbers.hangul.md.html; result = 13256 } 00:00:05 i #2989 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/numbers/numbers.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\numbers.md.epub } 00:00:05 d #2990 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\numbers.md.epub; new_path = c:/home/git/vault/dist/data/numbers/numbers.md.epub; result = 6368 } 00:00:05 i #2991 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/numbers/numbers.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\numbers.md.pdf } 00:00:05 d #2992 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\numbers.md.pdf; new_path = c:/home/git/vault/dist/data/numbers/numbers.md.pdf; result = 20721 } 00:00:05 i #2993 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/numbers/numbers.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\numbers.md.html } 00:00:05 d #2994 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\numbers.md.html; new_path = c:/home/git/vault/dist/data/numbers/numbers.md.html; result = 19554 } 00:00:05 i #2995 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/numbers/numbers.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\numbers.hangul.md } 00:00:05 d #2996 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\numbers.hangul.md; new_path = c:/home/git/vault/dist/data/numbers/numbers.hangul.md; result = 2058 } 00:00:05 d #2997 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/personality/personality.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/personality/personality.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #2998 > '17a6d9d0c45d109ff619ec77bcf456f06ba31cc4' 00:00:05 v #2999 > f8e5972d7a116efc09e6f689052a2c00ef110f18 00:00:05 v #3000 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 v #3001 > '1a2393e1a9c94d35872b7e923027423963dbef31' 00:00:05 d #3002 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/compilers/compilers.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/compilers/compilers.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #3003 > 'eb05ce2c347cba8aa7491d11c958465cd9af4a87' 00:00:05 v #3004 > c7a57567fdf7ab3fb89bd268224cfdf5f8dadc9f 00:00:05 v #3005 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #3006 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.hangul.md.epub } 00:00:05 d #3007 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.hangul.md.epub; result = 5566 } 00:00:05 i #3008 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.hangul.md.pdf } 00:00:05 d #3009 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.hangul.md.pdf; result = 4625 } 00:00:05 i #3010 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.hangul.md.html } 00:00:05 d #3011 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.hangul.md.html; result = 11683 } 00:00:05 i #3012 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.md.epub } 00:00:05 v #3013 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 v #3014 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #3015 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.md.epub; result = 5494 } 00:00:05 d #3016 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/ethics/ethics.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/ethics/ethics.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #3017 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #3018 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.md.pdf } 00:00:05 d #3019 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Olivia.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Olivia.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 d #3020 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.md.pdf; result = 4950 } 00:00:05 i #3021 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hunting/hunting.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hunting.hangul.md.epub } 00:00:05 i #3022 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.md.html } 00:00:05 d #3023 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.md.html; new_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.md.html; result = 11642 } 00:00:05 d #3023 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hunting.hangul.md.epub; new_path = c:/home/git/vault/dist/data/hunting/hunting.hangul.md.epub; result = 21652 } 00:00:05 i #3025 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hunting/hunting.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hunting.hangul.md.pdf } 00:00:05 i #3026 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.hangul.md } 00:00:05 d #3027 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AubriToffee.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/AubriToffee.html.hangul.md; result = 152 } 00:00:05 d #3028 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hunting.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/hunting/hunting.hangul.md.pdf; result = 26383 } 00:00:05 i #3029 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hunting/hunting.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hunting.hangul.md.html } 00:00:05 d #3030 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/AwesomeEly.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/AwesomeEly.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 d #3031 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hunting.hangul.md.html; new_path = c:/home/git/vault/dist/data/hunting/hunting.hangul.md.html; result = 86605 } 00:00:05 i #3032 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hunting/hunting.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hunting.md.epub } 00:00:05 d #3033 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hunting.md.epub; new_path = c:/home/git/vault/dist/data/hunting/hunting.md.epub; result = 19641 } 00:00:05 i #3034 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hunting/hunting.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hunting.md.pdf } 00:00:05 d #3035 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hunting.md.pdf; new_path = c:/home/git/vault/dist/data/hunting/hunting.md.pdf; result = 67970 } 00:00:05 i #3036 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hunting/hunting.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hunting.md.html } 00:00:05 d #3037 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hunting.md.html; new_path = c:/home/git/vault/dist/data/hunting/hunting.md.html; result = 63988 } 00:00:05 i #3038 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/hunting/hunting.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hunting.hangul.md } 00:00:05 d #3039 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hunting.hangul.md; new_path = c:/home/git/vault/dist/data/hunting/hunting.hangul.md; result = 62482 } 00:00:05 d #3040 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/identity/identity.fc1943s.7z.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/identity/identity.fc1943s.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #3041 > 33241bf308571f30a46d2ef4af47882bd6d76c2c 00:00:05 v #3042 > 'a1d96e6335c70898790582735eb8154509a5c803' 00:00:05 v #3043 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 v #3044 > 17a6d9d0c45d109ff619ec77bcf456f06ba31cc4 00:00:05 v #3045 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 d #3046 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/personality/personality.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/personality/personality.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 i #3047 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.hangul.md.epub } 00:00:05 d #3048 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.hangul.md.epub; result = 5570 } 00:00:05 i #3049 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.hangul.md.pdf } 00:00:05 d #3050 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.hangul.md.pdf; result = 4677 } 00:00:05 i #3051 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.hangul.md.html } 00:00:05 d #3052 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.hangul.md.html; result = 11681 } 00:00:05 i #3053 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.md.epub } 00:00:05 d #3054 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.md.epub; result = 5497 } 00:00:05 i #3055 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.md.pdf } 00:00:05 d #3056 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.md.pdf; result = 5038 } 00:00:05 i #3057 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.md.html } 00:00:05 d #3058 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.md.html; result = 11643 } 00:00:05 i #3059 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.hangul.md } 00:00:05 d #3060 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Dakota_Blare.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Dakota_Blare.html.hangul.md; result = 150 } 00:00:05 v #3061 > eb05ce2c347cba8aa7491d11c958465cd9af4a87 00:00:05 d #3062 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/diney_.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/diney_.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:05 v #3063 > 1a2393e1a9c94d35872b7e923027423963dbef31 00:00:05 v #3064 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #3065 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.hangul.md.epub } 00:00:05 v #3066 > '11c740033ce73b721e730b70049b51f65f1f3163' 00:00:05 d #3067 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.hangul.md.epub; new_path = c:/home/git/vault/dist/data/compilers/compilers.hangul.md.epub; result = 7609 } 00:00:05 i #3068 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.hangul.md.pdf } 00:00:05 d #3069 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/compilers/compilers.hangul.md.pdf; result = 7443 } 00:00:05 i #3070 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.hangul.md.html } 00:00:05 d #3071 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.hangul.md.html; new_path = c:/home/git/vault/dist/data/compilers/compilers.hangul.md.html; result = 22975 } 00:00:05 v #3072 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 i #3073 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.md.epub } 00:00:05 i #3074 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.hangul.md.epub } 00:00:05 v #3075 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 v #3075 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:05 d #3077 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/AwesomeEly.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/AwesomeEly.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:05 v #3078 > '90d1370c18ccc4155bfa0452150965014b0f58eb' 00:00:05 i #3079 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Olivia.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.hangul.md.epub } 00:00:05 v #3079 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:05 d #3081 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.hangul.md.epub; result = 5656 } 00:00:05 d #3082 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.md.epub; new_path = c:/home/git/vault/dist/data/compilers/compilers.md.epub; result = 7148 } 00:00:05 i #3083 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.md.pdf } 00:00:05 i #3084 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.hangul.md.pdf } 00:00:06 d #3085 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3086 > a1d96e6335c70898790582735eb8154509a5c803 00:00:06 d #3087 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.hangul.md.pdf; result = 3993 } 00:00:06 d #3088 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Olivia.html.hangul.md.epub; result = 5563 } 00:00:06 i #3089 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Olivia.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.hangul.md.pdf } 00:00:06 d #3090 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Olivia.html.hangul.md.pdf; result = 4627 } 00:00:06 i #3091 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Olivia.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.hangul.md.html } 00:00:06 i #3092 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.hangul.md.html } 00:00:06 d #3093 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.hangul.md.html; result = 10305 } 00:00:06 i #3094 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.md.epub } 00:00:06 d #3094 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Olivia.html.hangul.md.html; result = 11674 } 00:00:06 i #3096 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Olivia.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.md.epub } 00:00:06 d #3097 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.md.pdf; new_path = c:/home/git/vault/dist/data/compilers/compilers.md.pdf; result = 18611 } 00:00:06 d #3098 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.md.epub; new_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.md.epub; result = 5533 } 00:00:06 d #3099 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Olivia.html.md.epub; result = 5490 } 00:00:06 i #3100 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.md.pdf } 00:00:06 i #3101 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Olivia.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.md.pdf } 00:00:06 i #3101 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.md.html } 00:00:06 d #3103 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.md.pdf; result = 7722 } 00:00:06 d #3104 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Olivia.html.md.pdf; result = 4814 } 00:00:06 i #3105 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.md.html } 00:00:06 i #3106 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Olivia.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.md.html } 00:00:06 d #3107 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.md.html; new_path = c:/home/git/vault/dist/data/compilers/compilers.md.html; result = 20050 } 00:00:06 d #3108 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.md.html; new_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.md.html; result = 10143 } 00:00:06 d #3109 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Olivia.html.md.html; result = 11637 } 00:00:06 i #3110 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.hangul.md } 00:00:06 i #3111 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Olivia.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.hangul.md } 00:00:06 d #3112 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\ethics.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/ethics/ethics.mp3.hangul.md; result = 380 } 00:00:06 i #3113 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.hangul.md } 00:00:06 d #3114 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Olivia.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Olivia.html.hangul.md; result = 143 } 00:00:06 d #3115 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/exercism/exercism.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/exercism/exercism.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 d #3116 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Red_Flower203.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Red_Flower203.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 d #3117 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.hangul.md; new_path = c:/home/git/vault/dist/data/compilers/compilers.hangul.md; result = 7807 } 00:00:06 d #3118 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/compilers/compilers.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/compilers/compilers.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3119 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3120 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.hangul.md.epub } 00:00:06 d #3121 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/personality/personality.html.hangul.md.epub; result = 5619 } 00:00:06 i #3122 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.hangul.md.pdf } 00:00:06 d #3123 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/personality/personality.html.hangul.md.pdf; result = 4322 } 00:00:06 i #3124 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.hangul.md.html } 00:00:06 d #3125 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/personality/personality.html.hangul.md.html; result = 10812 } 00:00:06 i #3126 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.md.epub } 00:00:06 d #3127 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.md.epub; new_path = c:/home/git/vault/dist/data/personality/personality.html.md.epub; result = 5513 } 00:00:06 i #3128 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.md.pdf } 00:00:06 v #3129 > '686cf1b026ac94c307ea6730e1b68c4579c8f568' 00:00:06 d #3130 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.md.pdf; new_path = c:/home/git/vault/dist/data/personality/personality.html.md.pdf; result = 6656 } 00:00:06 i #3131 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.md.html } 00:00:06 d #3132 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.md.html; new_path = c:/home/git/vault/dist/data/personality/personality.html.md.html; result = 10655 } 00:00:06 i #3133 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.hangul.md } 00:00:06 d #3134 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.html.hangul.md; new_path = c:/home/git/vault/dist/data/personality/personality.html.hangul.md; result = 578 } 00:00:06 d #3135 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/personality/personality.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/personality/personality.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3136 > 11c740033ce73b721e730b70049b51f65f1f3163 00:00:06 v #3137 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3138 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/diney_.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/diney_.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3139 > 90d1370c18ccc4155bfa0452150965014b0f58eb 00:00:06 v #3140 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3141 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.hangul.md.epub } 00:00:06 d #3142 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.hangul.md.epub; result = 5561 } 00:00:06 i #3143 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.hangul.md.pdf } 00:00:06 d #3144 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.hangul.md.pdf; result = 4625 } 00:00:06 i #3145 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.hangul.md.html } 00:00:06 d #3146 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.hangul.md.html; result = 11677 } 00:00:06 i #3147 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.md.epub } 00:00:06 d #3148 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.md.epub; result = 5494 } 00:00:06 i #3149 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.md.pdf } 00:00:06 d #3150 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.md.pdf; result = 5080 } 00:00:06 i #3151 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.md.html } 00:00:06 d #3152 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.md.html; new_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.md.html; result = 11641 } 00:00:06 i #3153 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.hangul.md } 00:00:06 d #3154 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\AwesomeEly.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/AwesomeEly.html.hangul.md; result = 146 } 00:00:06 d #3155 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/BirthdayLexxx.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/BirthdayLexxx.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3156 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 v #3157 > '61b61ae6334ea017fee41ba877bedfd66ce5cd59' 00:00:06 v #3158 > '04ac04f2d639d9f1128e01a92c74324159d9a8b0' 00:00:06 i #3159 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.hangul.md.epub } 00:00:06 d #3160 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.hangul.md.epub; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.hangul.md.epub; result = 5983 } 00:00:06 i #3161 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.hangul.md.pdf } 00:00:06 d #3162 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.hangul.md.pdf; result = 8642 } 00:00:06 i #3163 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.hangul.md.html } 00:00:06 d #3164 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.hangul.md.html; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.hangul.md.html; result = 11673 } 00:00:06 i #3165 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.md.epub } 00:00:06 d #3166 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.md.epub; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.md.epub; result = 5840 } 00:00:06 i #3167 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.md.pdf } 00:00:06 d #3168 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.md.pdf; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.md.pdf; result = 11769 } 00:00:06 i #3169 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.md.html } 00:00:06 d #3170 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.md.html; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.md.html; result = 11621 } 00:00:06 i #3171 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.hangul.md } 00:00:06 v #3172 > '385359231e187441d5e052bfa7c26b3ad5aa645f' 00:00:06 v #3173 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3174 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.7z.hangul.md; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.7z.hangul.md; result = 1349 } 00:00:06 d #3175 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/exercism/exercism.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/exercism/exercism.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 d #3176 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/identity/identity.fc1943s.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/identity/identity.fc1943s.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3177 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3178 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Red_Flower203.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Red_Flower203.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3179 > '9f027fb632360364fdede8801655256872d810e4' 00:00:06 v #3180 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3181 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/compilers/compilers.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/compilers/compilers.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3182 > 686cf1b026ac94c307ea6730e1b68c4579c8f568 00:00:06 v #3183 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3184 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/personality/personality.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/personality/personality.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3185 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3186 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/diney_.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.hangul.md.epub } 00:00:06 d #3187 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/diney_.html.hangul.md.epub; result = 5563 } 00:00:06 i #3188 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/diney_.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.hangul.md.pdf } 00:00:06 d #3189 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/diney_.html.hangul.md.pdf; result = 4672 } 00:00:06 i #3190 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/diney_.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.hangul.md.html } 00:00:06 d #3191 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/diney_.html.hangul.md.html; result = 11672 } 00:00:06 i #3192 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/diney_.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.md.epub } 00:00:06 d #3193 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/diney_.html.md.epub; result = 5490 } 00:00:06 i #3194 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/diney_.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.md.pdf } 00:00:06 d #3195 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/diney_.html.md.pdf; result = 4880 } 00:00:06 i #3196 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/diney_.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.md.html } 00:00:06 d #3197 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.md.html; new_path = c:/home/git/vault/dist/data/chat/diney_.html.md.html; result = 11637 } 00:00:06 i #3198 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/diney_.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.hangul.md } 00:00:06 v #3199 > 'e182749a69de369b41601d59b66d66fda8c320b8' 00:00:06 d #3200 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\diney_.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/diney_.html.hangul.md; result = 141 } 00:00:06 d #3201 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/EffyTudor.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/EffyTudor.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3202 > 61b61ae6334ea017fee41ba877bedfd66ce5cd59 00:00:06 v #3203 > 04ac04f2d639d9f1128e01a92c74324159d9a8b0 00:00:06 v #3204 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3205 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3206 > 'b036d7daa1eaa41f6831e80a72c6ff7fc97752dc' 00:00:06 v #3207 > 385359231e187441d5e052bfa7c26b3ad5aa645f 00:00:06 v #3208 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 v #3208 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3210 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/exercism/exercism.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.hangul.md.epub } 00:00:06 i #3211 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.hangul.md.epub } 00:00:06 d #3212 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/exercism/exercism.html.hangul.md.epub; result = 5542 } 00:00:06 i #3213 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/exercism/exercism.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.hangul.md.pdf } 00:00:06 d #3214 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.hangul.md.epub; result = 5573 } 00:00:06 i #3215 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.hangul.md.pdf } 00:00:06 v #3215 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3217 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/exercism/exercism.html.hangul.md.pdf; result = 3808 } 00:00:06 i #3218 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/exercism/exercism.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.hangul.md.html } 00:00:06 d #3219 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.hangul.md.pdf; result = 4975 } 00:00:06 d #3220 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/exercism/exercism.html.hangul.md.html; result = 10355 } 00:00:06 i #3221 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.hangul.md.html } 00:00:06 i #3222 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/exercism/exercism.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.md.epub } 00:00:06 d #3223 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.hangul.md.html; result = 11684 } 00:00:06 d #3224 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.md.epub; new_path = c:/home/git/vault/dist/data/exercism/exercism.html.md.epub; result = 5462 } 00:00:06 i #3225 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.md.epub } 00:00:06 i #3226 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/exercism/exercism.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.md.pdf } 00:00:06 d #3227 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 d #3228 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.md.epub; result = 5498 } 00:00:06 d #3229 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.md.pdf; new_path = c:/home/git/vault/dist/data/exercism/exercism.html.md.pdf; result = 6010 } 00:00:06 i #3230 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.md.pdf } 00:00:06 i #3231 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/exercism/exercism.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.md.html } 00:00:06 d #3232 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.md.pdf; result = 5495 } 00:00:06 d #3233 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.md.html; new_path = c:/home/git/vault/dist/data/exercism/exercism.html.md.html; result = 10262 } 00:00:06 i #3234 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.md.html } 00:00:06 i #3235 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/exercism/exercism.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.hangul.md } 00:00:06 d #3236 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.md.html; result = 11644 } 00:00:06 d #3237 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\exercism.html.hangul.md; new_path = c:/home/git/vault/dist/data/exercism/exercism.html.hangul.md; result = 299 } 00:00:06 i #3238 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.hangul.md } 00:00:06 d #3239 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Red_Flower203.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Red_Flower203.html.hangul.md; result = 153 } 00:00:06 d #3240 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/facebook/facebook.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/facebook/facebook.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 d #3241 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/RocknRose.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/RocknRose.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3242 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 v #3243 > 9f027fb632360364fdede8801655256872d810e4 00:00:06 i #3244 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.hangul.md.epub } 00:00:06 d #3245 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.hangul.md.epub; result = 5748 } 00:00:06 i #3246 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.hangul.md.pdf } 00:00:06 d #3247 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.hangul.md.pdf; result = 5585 } 00:00:06 i #3248 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.hangul.md.html } 00:00:06 d #3249 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.hangul.md.html; result = 10468 } 00:00:06 i #3250 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.md.epub } 00:00:06 d #3251 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.md.epub; new_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.md.epub; result = 5606 } 00:00:06 i #3252 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.md.pdf } 00:00:06 d #3253 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.md.pdf; result = 10977 } 00:00:06 i #3254 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.md.html } 00:00:06 d #3255 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.md.html; new_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.md.html; result = 10286 } 00:00:06 i #3256 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.hangul.md } 00:00:06 d #3257 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\compilers.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/compilers/compilers.pdf.hangul.md; result = 476 } 00:00:06 d #3258 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/cryptography/cryptography.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/cryptography/cryptography.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3259 > '695e1bd2568fc3ec226704fc887261fa878c5df7' 00:00:06 v #3260 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 v #3261 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 i #3262 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.hangul.md.epub } 00:00:06 d #3263 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/EffyTudor.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/EffyTudor.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3264 > e182749a69de369b41601d59b66d66fda8c320b8 00:00:06 d #3265 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.hangul.md.epub; new_path = c:/home/git/vault/dist/data/personality/personality.hangul.md.epub; result = 60937 } 00:00:06 i #3266 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.hangul.md.pdf } 00:00:06 d #3267 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/personality/personality.hangul.md.pdf; result = 78346 } 00:00:06 i #3268 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.hangul.md.html } 00:00:06 d #3269 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.hangul.md.html; new_path = c:/home/git/vault/dist/data/personality/personality.hangul.md.html; result = 318093 } 00:00:06 i #3270 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.md.epub } 00:00:06 d #3271 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.md.epub; new_path = c:/home/git/vault/dist/data/personality/personality.md.epub; result = 54082 } 00:00:06 i #3272 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.md.pdf } 00:00:06 d #3273 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.md.pdf; new_path = c:/home/git/vault/dist/data/personality/personality.md.pdf; result = 230231 } 00:00:06 i #3274 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.md.html } 00:00:06 d #3275 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.md.html; new_path = c:/home/git/vault/dist/data/personality/personality.md.html; result = 218431 } 00:00:06 i #3276 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.hangul.md } 00:00:06 d #3277 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.hangul.md; new_path = c:/home/git/vault/dist/data/personality/personality.hangul.md; result = 271008 } 00:00:06 d #3278 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/personality/personality.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/personality/personality.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3279 > b036d7daa1eaa41f6831e80a72c6ff7fc97752dc 00:00:06 v #3280 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 v #3281 > 'd8b21b32a827ce110b72a91d73fc68c37366f984' 00:00:06 i #3282 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.hangul.md.epub } 00:00:06 d #3283 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.hangul.md.epub; result = 5569 } 00:00:06 v #3284 > 'd218e2d0579ceb35b6c9eb03d0063ac9746cda1f' 00:00:06 i #3284 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.hangul.md.pdf } 00:00:06 d #3286 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.hangul.md.pdf; result = 4625 } 00:00:06 i #3287 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.hangul.md.html } 00:00:06 d #3288 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.hangul.md.html; result = 11686 } 00:00:06 i #3289 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.md.epub } 00:00:06 d #3290 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.md.epub; result = 5497 } 00:00:06 i #3291 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.md.pdf } 00:00:06 d #3292 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.md.pdf; result = 4980 } 00:00:06 i #3293 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.md.html } 00:00:06 d #3294 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.md.html; new_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.md.html; result = 11644 } 00:00:06 i #3295 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.hangul.md } 00:00:06 d #3296 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\BirthdayLexxx.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/BirthdayLexxx.html.hangul.md; result = 155 } 00:00:06 v #3297 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 d #3298 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/facebook/facebook.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/facebook/facebook.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 i #3299 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.hangul.md.epub } 00:00:06 d #3300 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.hangul.md.epub; result = 6093 } 00:00:06 i #3301 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.hangul.md.pdf } 00:00:06 d #3302 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.hangul.md.pdf; result = 5663 } 00:00:06 i #3303 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.hangul.md.html } 00:00:06 d #3304 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.hangul.md.html; result = 13391 } 00:00:06 v #3305 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 i #3306 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.md.epub } 00:00:06 d #3307 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.md.epub; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.md.epub; result = 5871 } 00:00:06 i #3308 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.md.pdf } 00:00:06 d #3309 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/RocknRose.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/RocknRose.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 d #3310 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.md.pdf; result = 10914 } 00:00:06 i #3311 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.md.html } 00:00:06 v #3312 > 'cc93beedc8535df5abf8406510f5aec3aa40d343' 00:00:06 d #3313 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.md.html; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.md.html; result = 12292 } 00:00:06 i #3314 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.hangul.md } 00:00:06 d #3315 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.pdf.hangul.md; result = 2889 } 00:00:06 d #3316 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/identity/identity.fc1943s.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/identity/identity.fc1943s.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3317 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3318 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/facebook/facebook.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/facebook/facebook.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3319 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3320 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/cryptography/cryptography.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/cryptography/cryptography.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3321 > 695e1bd2568fc3ec226704fc887261fa878c5df7 00:00:06 v #3322 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3323 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.hangul.md.epub } 00:00:06 d #3324 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.hangul.md.epub; result = 5563 } 00:00:06 i #3325 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.hangul.md.pdf } 00:00:06 d #3326 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.hangul.md.pdf; result = 4626 } 00:00:06 i #3327 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.hangul.md.html } 00:00:06 d #3328 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.hangul.md.html; result = 11677 } 00:00:06 i #3329 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.md.epub } 00:00:06 d #3330 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.md.epub; result = 5493 } 00:00:06 i #3331 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.md.pdf } 00:00:06 d #3332 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.md.pdf; result = 4965 } 00:00:06 v #3333 > '68627cc8449ef4c0341ed29575f29640d4aa156d' 00:00:06 i #3334 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.md.html } 00:00:06 d #3335 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.md.html; new_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.md.html; result = 11640 } 00:00:06 i #3336 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.hangul.md } 00:00:06 d #3337 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\EffyTudor.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/EffyTudor.html.hangul.md; result = 146 } 00:00:06 d #3338 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/Fairy_Sweet.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/Fairy_Sweet.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3339 > '3d488ff01374aae26e1f062b0400e2b62ad1712a' 00:00:06 v #3340 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 v #3341 > d8b21b32a827ce110b72a91d73fc68c37366f984 00:00:06 d #3342 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/personality/personality.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/personality/personality.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3343 > d218e2d0579ceb35b6c9eb03d0063ac9746cda1f 00:00:06 v #3344 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3345 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/facebook/facebook.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/facebook/facebook.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3346 > 'c23b3c88e5cb9e9ab6f57e5b005ddd546c262903' 00:00:06 v #3347 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3348 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RocknRose.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.hangul.md.epub } 00:00:06 d #3349 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/RocknRose.html.hangul.md.epub; result = 5564 } 00:00:06 v #3350 > cc93beedc8535df5abf8406510f5aec3aa40d343 00:00:06 i #3351 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RocknRose.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.hangul.md.pdf } 00:00:06 d #3352 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/RocknRose.html.hangul.md.pdf; result = 4630 } 00:00:06 i #3353 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RocknRose.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.hangul.md.html } 00:00:06 d #3354 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/RocknRose.html.hangul.md.html; result = 11674 } 00:00:06 i #3355 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RocknRose.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.md.epub } 00:00:06 d #3356 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/RocknRose.html.md.epub; result = 5493 } 00:00:06 i #3357 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RocknRose.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.md.pdf } 00:00:06 d #3358 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/RocknRose.html.md.pdf; result = 4985 } 00:00:06 i #3359 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RocknRose.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.md.html } 00:00:06 d #3360 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.md.html; new_path = c:/home/git/vault/dist/data/chat/RocknRose.html.md.html; result = 11640 } 00:00:06 i #3361 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RocknRose.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.hangul.md } 00:00:06 v #3362 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 d #3363 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RocknRose.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/RocknRose.html.hangul.md; result = 143 } 00:00:06 i #3364 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.hangul.md.epub } 00:00:06 v #3365 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3366 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/chat/RorrieGomez.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/chat/RorrieGomez.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 d #3367 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.hangul.md.epub; result = 5513 } 00:00:06 i #3368 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.hangul.md.pdf } 00:00:06 d #3369 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/identity/identity.fc1943s.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/identity/identity.fc1943s.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 d #3370 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.hangul.md.pdf; result = 4531 } 00:00:06 i #3371 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.hangul.md.html } 00:00:06 d #3372 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.hangul.md.html; result = 10086 } 00:00:06 i #3373 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.md.epub } 00:00:06 d #3374 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.md.epub; result = 5449 } 00:00:06 i #3375 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.md.pdf } 00:00:06 d #3376 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.md.pdf; result = 6216 } 00:00:06 i #3377 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.md.html } 00:00:06 d #3378 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.md.html; result = 10058 } 00:00:06 i #3379 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.hangul.md } 00:00:06 d #3380 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/facebook/facebook.fc1943s.hangul.md; result = 106 } 00:00:06 d #3381 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fiction/comics.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fiction/comics.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3382 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3383 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cryptography/cryptography.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.hangul.md.epub } 00:00:06 d #3384 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.hangul.md.epub; new_path = c:/home/git/vault/dist/data/cryptography/cryptography.hangul.md.epub; result = 8692 } 00:00:06 i #3385 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cryptography/cryptography.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.hangul.md.pdf } 00:00:06 d #3386 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/cryptography/cryptography.hangul.md.pdf; result = 15021 } 00:00:06 i #3387 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cryptography/cryptography.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.hangul.md.html } 00:00:06 d #3388 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.hangul.md.html; new_path = c:/home/git/vault/dist/data/cryptography/cryptography.hangul.md.html; result = 39050 } 00:00:06 i #3389 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cryptography/cryptography.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.md.epub } 00:00:06 d #3390 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.md.epub; new_path = c:/home/git/vault/dist/data/cryptography/cryptography.md.epub; result = 8599 } 00:00:06 i #3391 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cryptography/cryptography.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.md.pdf } 00:00:06 d #3392 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.md.pdf; new_path = c:/home/git/vault/dist/data/cryptography/cryptography.md.pdf; result = 28903 } 00:00:06 i #3393 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cryptography/cryptography.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.md.html } 00:00:06 d #3394 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.md.html; new_path = c:/home/git/vault/dist/data/cryptography/cryptography.md.html; result = 47170 } 00:00:06 i #3395 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/cryptography/cryptography.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.hangul.md } 00:00:06 d #3396 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\cryptography.hangul.md; new_path = c:/home/git/vault/dist/data/cryptography/cryptography.hangul.md; result = 15583 } 00:00:06 d #3397 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/dance/dance.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/dance/dance.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3398 > '19608cf3c57a331f782ac1644d62a24aa6647ed9' 00:00:06 v #3399 > 68627cc8449ef4c0341ed29575f29640d4aa156d 00:00:06 v #3400 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3401 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3402 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3403 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.hangul.md.epub } 00:00:06 d #3404 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/personality/personality.pdf.hangul.md.epub; result = 5909 } 00:00:06 i #3405 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.hangul.md.pdf } 00:00:06 d #3406 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/personality/personality.pdf.hangul.md.pdf; result = 5733 } 00:00:06 i #3407 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.hangul.md.html } 00:00:06 d #3408 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/personality/personality.pdf.hangul.md.html; result = 11060 } 00:00:06 i #3409 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.md.epub } 00:00:06 v #3410 > 3d488ff01374aae26e1f062b0400e2b62ad1712a 00:00:06 d #3411 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.md.epub; new_path = c:/home/git/vault/dist/data/personality/personality.pdf.md.epub; result = 5712 } 00:00:06 i #3412 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.md.pdf } 00:00:06 d #3413 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/personality/personality.pdf.md.pdf; result = 12232 } 00:00:06 i #3414 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.md.html } 00:00:06 d #3415 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.md.html; new_path = c:/home/git/vault/dist/data/personality/personality.pdf.md.html; result = 10681 } 00:00:06 i #3416 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.hangul.md } 00:00:06 d #3417 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/personality/personality.pdf.hangul.md; result = 984 } 00:00:06 d #3418 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/personality/personality.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/personality/personality.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3419 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 v #3420 > c23b3c88e5cb9e9ab6f57e5b005ddd546c262903 00:00:06 i #3421 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.hangul.md.epub } 00:00:06 v #3422 > '1e05ad239e45446563aad233d9f0cba964a7fa66' 00:00:06 d #3423 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/facebook/facebook.html.hangul.md.epub; result = 5531 } 00:00:06 i #3424 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.hangul.md.pdf } 00:00:06 d #3425 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/facebook/facebook.html.hangul.md.pdf; result = 3806 } 00:00:06 i #3426 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.hangul.md.html } 00:00:06 d #3427 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/facebook/facebook.html.hangul.md.html; result = 10297 } 00:00:06 i #3428 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.md.epub } 00:00:06 d #3429 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.md.epub; new_path = c:/home/git/vault/dist/data/facebook/facebook.html.md.epub; result = 5457 } 00:00:06 i #3430 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.md.pdf } 00:00:06 d #3431 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.md.pdf; new_path = c:/home/git/vault/dist/data/facebook/facebook.html.md.pdf; result = 6082 } 00:00:06 i #3432 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.md.html } 00:00:06 d #3433 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.md.html; new_path = c:/home/git/vault/dist/data/facebook/facebook.html.md.html; result = 10237 } 00:00:06 i #3434 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/facebook/facebook.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.hangul.md } 00:00:06 d #3435 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\facebook.html.hangul.md; new_path = c:/home/git/vault/dist/data/facebook/facebook.html.hangul.md; result = 241 } 00:00:06 v #3436 > '5bd8f037f38c36f4f81dbf9c7ba66e9a0d8594e8' 00:00:06 v #3437 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 d #3438 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fashion/fashion.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fashion/fashion.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 i #3439 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.hangul.md.epub } 00:00:06 d #3440 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.hangul.md.epub; result = 6961 } 00:00:06 i #3441 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.hangul.md.pdf } 00:00:06 d #3442 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.hangul.md.pdf; result = 2202 } 00:00:06 i #3443 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.hangul.md.html } 00:00:06 d #3444 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.hangul.md.html; result = 21635 } 00:00:06 i #3445 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.md.epub } 00:00:06 d #3446 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.md.epub; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.md.epub; result = 6642 } 00:00:06 i #3447 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.md.pdf } 00:00:06 d #3448 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.md.pdf; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.md.pdf; result = 2203 } 00:00:06 i #3449 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.md.html } 00:00:06 v #3450 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3451 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.md.html; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.md.html; result = 17455 } 00:00:06 i #3452 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.hangul.md } 00:00:06 d #3453 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\identity.fc1943s.png.hangul.md; new_path = c:/home/git/vault/dist/data/identity/identity.fc1943s.png.hangul.md; result = 10469 } 00:00:06 d #3454 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/chat/RorrieGomez.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/chat/RorrieGomez.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3455 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3456 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/kakao/kakao.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/kakao/kakao.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 d #3457 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fiction/comics.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fiction/comics.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3458 > '59510e8d151bf1ed16e2f80089c7df50221b5565' 00:00:06 v #3459 > 19608cf3c57a331f782ac1644d62a24aa6647ed9 00:00:06 v #3460 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3461 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/dance/dance.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/dance/dance.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3462 > '4fcc14c389efe6ff802ca7b9c339f651219e2bcb' 00:00:06 v #3463 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3464 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.hangul.md.epub } 00:00:06 d #3465 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.hangul.md.epub; result = 5564 } 00:00:06 i #3466 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.hangul.md.pdf } 00:00:06 d #3467 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.hangul.md.pdf; result = 4674 } 00:00:06 i #3468 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.hangul.md.html } 00:00:06 v #3469 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3470 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.hangul.md.html; result = 11681 } 00:00:06 i #3471 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.md.epub } 00:00:06 d #3472 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.md.epub; result = 5495 } 00:00:06 d #3473 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/personality/personality.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/personality/personality.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 i #3474 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.md.pdf } 00:00:06 d #3475 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.md.pdf; result = 4994 } 00:00:06 i #3476 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.md.html } 00:00:06 d #3477 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.md.html; new_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.md.html; result = 11642 } 00:00:06 i #3478 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.hangul.md } 00:00:06 d #3479 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\Fairy_Sweet.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/Fairy_Sweet.html.hangul.md; result = 150 } 00:00:06 d #3480 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/politics/politics.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/politics/politics.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3481 > '431296e1ef3d698ddfa8eb4e42afadb8b9705626' 00:00:06 v #3482 > 5bd8f037f38c36f4f81dbf9c7ba66e9a0d8594e8 00:00:06 v #3483 > '7e3cfddfb6ec92f470b429403cd5e5a9b1ec7315' 00:00:06 v #3484 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 v #3485 > 1e05ad239e45446563aad233d9f0cba964a7fa66 00:00:06 d #3486 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fashion/fashion.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fashion/fashion.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3487 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 v #3488 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 i #3489 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/comics.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\comics.hangul.md.epub } 00:00:06 d #3490 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/kakao/kakao.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/kakao/kakao.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3491 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 d #3492 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\comics.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fiction/comics.hangul.md.epub; result = 18256 } 00:00:06 i #3493 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/comics.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\comics.hangul.md.pdf } 00:00:06 d #3494 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\comics.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/comics.hangul.md.pdf; result = 21904 } 00:00:06 i #3495 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/comics.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\comics.hangul.md.html } 00:00:06 d #3496 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\comics.hangul.md.html; new_path = c:/home/git/vault/dist/data/fiction/comics.hangul.md.html; result = 65859 } 00:00:06 i #3497 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/comics.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\comics.md.epub } 00:00:06 i #3498 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.hangul.md.epub } 00:00:06 d #3499 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.hangul.md.epub; result = 5568 } 00:00:06 d #3500 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\comics.md.epub; new_path = c:/home/git/vault/dist/data/fiction/comics.md.epub; result = 16684 } 00:00:06 i #3501 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.hangul.md.pdf } 00:00:06 i #3502 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/comics.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\comics.md.pdf } 00:00:06 d #3503 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.hangul.md.pdf; result = 4624 } 00:00:06 i #3504 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.hangul.md.html } 00:00:06 d #3505 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\comics.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/comics.md.pdf; result = 56705 } 00:00:06 i #3506 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/comics.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\comics.md.html } 00:00:06 d #3507 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.hangul.md.html; result = 11680 } 00:00:06 i #3508 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.md.epub } 00:00:06 d #3509 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\comics.md.html; new_path = c:/home/git/vault/dist/data/fiction/comics.md.html; result = 49909 } 00:00:06 i #3510 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/comics.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\comics.hangul.md } 00:00:06 d #3511 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.md.epub; new_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.md.epub; result = 5495 } 00:00:06 i #3512 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.md.pdf } 00:00:06 d #3513 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\comics.hangul.md; new_path = c:/home/git/vault/dist/data/fiction/comics.hangul.md; result = 45838 } 00:00:06 d #3514 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.md.pdf; new_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.md.pdf; result = 5063 } 00:00:06 i #3515 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.md.html } 00:00:06 d #3516 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.md.html; new_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.md.html; result = 11642 } 00:00:06 i #3517 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.hangul.md } 00:00:06 d #3518 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\RorrieGomez.html.hangul.md; new_path = c:/home/git/vault/dist/data/chat/RorrieGomez.html.hangul.md; result = 149 } 00:00:06 d #3519 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fiction/fiction.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fiction/fiction.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 d #3520 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fiction/fiction.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fiction/fiction.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3521 > 59510e8d151bf1ed16e2f80089c7df50221b5565 00:00:06 v #3522 > 4fcc14c389efe6ff802ca7b9c339f651219e2bcb 00:00:06 v #3523 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3524 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dance/dance.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dance.hangul.md.epub } 00:00:06 d #3525 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dance.hangul.md.epub; new_path = c:/home/git/vault/dist/data/dance/dance.hangul.md.epub; result = 15451 } 00:00:06 i #3526 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dance/dance.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dance.hangul.md.pdf } 00:00:06 d #3527 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dance.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/dance/dance.hangul.md.pdf; result = 15237 } 00:00:06 i #3528 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dance/dance.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dance.hangul.md.html } 00:00:06 v #3529 > '8fabe889f569ba3807ef0839f2b579234fb81f91' 00:00:06 d #3530 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dance.hangul.md.html; new_path = c:/home/git/vault/dist/data/dance/dance.hangul.md.html; result = 57491 } 00:00:06 i #3531 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dance/dance.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dance.md.epub } 00:00:06 d #3532 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dance.md.epub; new_path = c:/home/git/vault/dist/data/dance/dance.md.epub; result = 14054 } 00:00:06 i #3533 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dance/dance.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dance.md.pdf } 00:00:06 d #3534 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dance.md.pdf; new_path = c:/home/git/vault/dist/data/dance/dance.md.pdf; result = 43868 } 00:00:06 i #3535 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dance/dance.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dance.md.html } 00:00:06 d #3536 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dance.md.html; new_path = c:/home/git/vault/dist/data/dance/dance.md.html; result = 43482 } 00:00:06 i #3537 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/dance/dance.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\dance.hangul.md } 00:00:06 d #3538 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\dance.hangul.md; new_path = c:/home/git/vault/dist/data/dance/dance.hangul.md; result = 40035 } 00:00:06 v #3539 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 d #3540 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/reddit/reddit.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/reddit/reddit.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 i #3541 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.hangul.md.epub } 00:00:06 d #3542 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/personality/personality.png.hangul.md.epub; result = 7118 } 00:00:06 i #3543 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.hangul.md.pdf } 00:00:06 d #3544 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/personality/personality.png.hangul.md.pdf; result = 2202 } 00:00:06 i #3545 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.hangul.md.html } 00:00:06 d #3546 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/personality/personality.png.hangul.md.html; result = 15904 } 00:00:06 v #3546 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 i #3548 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.md.epub } 00:00:06 d #3549 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.md.epub; new_path = c:/home/git/vault/dist/data/personality/personality.png.md.epub; result = 6558 } 00:00:06 i #3550 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.md.pdf } 00:00:06 d #3551 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.md.pdf; new_path = c:/home/git/vault/dist/data/personality/personality.png.md.pdf; result = 2204 } 00:00:06 i #3552 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.md.html } 00:00:06 d #3553 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/politics/politics.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/politics/politics.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 d #3554 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.md.html; new_path = c:/home/git/vault/dist/data/personality/personality.png.md.html; result = 13572 } 00:00:06 i #3555 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/personality/personality.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.hangul.md } 00:00:06 d #3556 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\personality.png.hangul.md; new_path = c:/home/git/vault/dist/data/personality/personality.png.hangul.md; result = 5168 } 00:00:06 d #3557 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/philosophy/philosophy.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/philosophy/philosophy.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3558 > 431296e1ef3d698ddfa8eb4e42afadb8b9705626 00:00:06 v #3559 > 7e3cfddfb6ec92f470b429403cd5e5a9b1ec7315 00:00:06 v #3560 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 i #3561 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fashion/fashion.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fashion.hangul.md.epub } 00:00:06 v #3562 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:06 d #3563 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fashion.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fashion/fashion.hangul.md.epub; result = 9862 } 00:00:06 i #3564 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fashion/fashion.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fashion.hangul.md.pdf } 00:00:06 d #3565 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fashion.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fashion/fashion.hangul.md.pdf; result = 9110 } 00:00:06 i #3566 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fashion/fashion.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fashion.hangul.md.html } 00:00:06 i #3567 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.hangul.md.epub } 00:00:06 d #3568 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fashion.hangul.md.html; new_path = c:/home/git/vault/dist/data/fashion/fashion.hangul.md.html; result = 31947 } 00:00:06 i #3569 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fashion/fashion.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fashion.md.epub } 00:00:06 v #3569 > '2270cacb5c0ec855eeb2765a6fad9d32f7a0b6c2' 00:00:06 v #3571 > '35863a5ce4d23b6a72ec739442c0fd940b0a5328' 00:00:06 d #3572 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fashion.md.epub; new_path = c:/home/git/vault/dist/data/fashion/fashion.md.epub; result = 9081 } 00:00:06 d #3573 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/kakao/kakao.html.hangul.md.epub; result = 5544 } 00:00:06 i #3574 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fashion/fashion.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fashion.md.pdf } 00:00:06 i #3575 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.hangul.md.pdf } 00:00:06 d #3576 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fashion.md.pdf; new_path = c:/home/git/vault/dist/data/fashion/fashion.md.pdf; result = 25410 } 00:00:06 d #3577 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/kakao/kakao.html.hangul.md.pdf; result = 3849 } 00:00:06 i #3578 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fashion/fashion.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fashion.md.html } 00:00:06 i #3579 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.hangul.md.html } 00:00:06 d #3580 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fashion.md.html; new_path = c:/home/git/vault/dist/data/fashion/fashion.md.html; result = 25677 } 00:00:06 d #3581 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/kakao/kakao.html.hangul.md.html; result = 10331 } 00:00:06 i #3582 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fashion/fashion.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fashion.hangul.md } 00:00:06 i #3583 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.md.epub } 00:00:06 d #3584 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fashion.hangul.md; new_path = c:/home/git/vault/dist/data/fashion/fashion.hangul.md; result = 16366 } 00:00:06 d #3584 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.md.epub; new_path = c:/home/git/vault/dist/data/kakao/kakao.html.md.epub; result = 5462 } 00:00:06 i #3586 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.md.pdf } 00:00:06 d #3587 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.md.pdf; new_path = c:/home/git/vault/dist/data/kakao/kakao.html.md.pdf; result = 6189 } 00:00:06 i #3588 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.md.html } 00:00:06 d #3589 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.md.html; new_path = c:/home/git/vault/dist/data/kakao/kakao.html.md.html; result = 10254 } 00:00:06 i #3590 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.hangul.md } 00:00:06 d #3591 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fiction/acting.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fiction/acting.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 d #3592 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.html.hangul.md; new_path = c:/home/git/vault/dist/data/kakao/kakao.html.hangul.md; result = 275 } 00:00:06 d #3593 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/kakao/kakao.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/kakao/kakao.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:06 v #3594 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3595 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fiction/fiction.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fiction/fiction.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:06 v #3596 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:06 d #3597 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fiction/fiction.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fiction/fiction.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #3598 > 8fabe889f569ba3807ef0839f2b579234fb81f91 00:00:07 v #3599 > 'f47c94890517de570ba3f3c2a65cd85a7c7c5d5d' 00:00:07 v #3600 > 'b6dbd0c8e44ee86bac57277c464c2bbfd2eb9533' 00:00:07 v #3601 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 v #3602 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 i #3603 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.hangul.md.epub } 00:00:07 d #3604 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/reddit/reddit.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/reddit/reddit.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 d #3605 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/politics/politics.png.hangul.md.epub; result = 6406 } 00:00:07 i #3606 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.hangul.md.pdf } 00:00:07 d #3607 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/politics/politics.png.hangul.md.pdf; result = 2203 } 00:00:07 i #3608 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.hangul.md.html } 00:00:07 d #3609 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/politics/politics.png.hangul.md.html; result = 12565 } 00:00:07 i #3610 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.md.epub } 00:00:07 d #3611 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.md.epub; new_path = c:/home/git/vault/dist/data/politics/politics.png.md.epub; result = 6137 } 00:00:07 i #3612 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.md.pdf } 00:00:07 d #3613 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.md.pdf; new_path = c:/home/git/vault/dist/data/politics/politics.png.md.pdf; result = 2197 } 00:00:07 i #3614 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.md.html } 00:00:07 d #3615 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.md.html; new_path = c:/home/git/vault/dist/data/politics/politics.png.md.html; result = 11697 } 00:00:07 i #3616 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.hangul.md } 00:00:07 d #3617 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.png.hangul.md; new_path = c:/home/git/vault/dist/data/politics/politics.png.hangul.md; result = 2418 } 00:00:07 v #3618 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3619 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/philosophy/philosophy.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/philosophy/philosophy.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 d #3620 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/programming/polyglot.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/programming/polyglot.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3621 > 'c91cdebfb596107523a7aaa85d93130ea828231b' 00:00:07 v #3622 > '4a4ea71442cf5cddadf09561d5d90f8793a3d59b' 00:00:07 v #3623 > 2270cacb5c0ec855eeb2765a6fad9d32f7a0b6c2 00:00:07 v #3624 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3625 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fiction/acting.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fiction/acting.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #3626 > 35863a5ce4d23b6a72ec739442c0fd940b0a5328 00:00:07 v #3627 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 v #3628 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #3629 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.hangul.md.epub } 00:00:07 d #3630 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/kakao/kakao.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/kakao/kakao.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 d #3631 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.hangul.md.epub; result = 5665 } 00:00:07 i #3632 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.hangul.md.pdf } 00:00:07 d #3633 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.hangul.md.pdf; result = 4221 } 00:00:07 i #3634 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.hangul.md.html } 00:00:07 d #3635 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.hangul.md.html; result = 10283 } 00:00:07 i #3636 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.md.epub } 00:00:07 d #3637 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.md.epub; new_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.md.epub; result = 5532 } 00:00:07 i #3638 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.md.pdf } 00:00:07 d #3639 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.md.pdf; result = 7694 } 00:00:07 i #3640 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.md.html } 00:00:07 v #3641 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 d #3642 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.md.html; new_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.md.html; result = 10131 } 00:00:07 i #3643 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.hangul.md } 00:00:07 d #3644 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/fiction/fiction.mp3.hangul.md; result = 359 } 00:00:07 i #3645 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.hangul.md.epub } 00:00:07 d #3646 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fiction/fiction.hangul.md.epub; result = 26435 } 00:00:07 i #3647 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.hangul.md.pdf } 00:00:07 d #3648 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/fiction.hangul.md.pdf; result = 30751 } 00:00:07 d #3649 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fiction/series.mp4.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fiction/series.mp4.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 i #3650 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.hangul.md.html } 00:00:07 d #3651 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.hangul.md.html; new_path = c:/home/git/vault/dist/data/fiction/fiction.hangul.md.html; result = 98107 } 00:00:07 i #3652 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.md.epub } 00:00:07 d #3653 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.md.epub; new_path = c:/home/git/vault/dist/data/fiction/fiction.md.epub; result = 23746 } 00:00:07 i #3654 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.md.pdf } 00:00:07 d #3655 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/fiction.md.pdf; result = 87292 } 00:00:07 i #3656 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.md.html } 00:00:07 d #3657 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.md.html; new_path = c:/home/git/vault/dist/data/fiction/fiction.md.html; result = 71613 } 00:00:07 i #3658 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/fiction.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\fiction.hangul.md } 00:00:07 d #3659 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\fiction.hangul.md; new_path = c:/home/git/vault/dist/data/fiction/fiction.hangul.md; result = 75899 } 00:00:07 d #3660 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/programming/systems.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/programming/systems.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3661 > f47c94890517de570ba3f3c2a65cd85a7c7c5d5d 00:00:07 v #3662 > b6dbd0c8e44ee86bac57277c464c2bbfd2eb9533 00:00:07 v #3663 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #3664 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.hangul.md.epub } 00:00:07 d #3665 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/reddit/reddit.html.hangul.md.epub; result = 5504 } 00:00:07 i #3666 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.hangul.md.pdf } 00:00:07 v #3667 > '7f1799bbda143e7281134173a6158c26693bea3b' 00:00:07 d #3668 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/reddit/reddit.html.hangul.md.pdf; result = 3752 } 00:00:07 i #3669 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.hangul.md.html } 00:00:07 d #3670 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/reddit/reddit.html.hangul.md.html; result = 10083 } 00:00:07 i #3671 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.md.epub } 00:00:07 d #3672 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.md.epub; new_path = c:/home/git/vault/dist/data/reddit/reddit.html.md.epub; result = 5440 } 00:00:07 i #3673 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.md.pdf } 00:00:07 d #3674 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.md.pdf; new_path = c:/home/git/vault/dist/data/reddit/reddit.html.md.pdf; result = 5922 } 00:00:07 i #3675 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.md.html } 00:00:07 d #3676 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.md.html; new_path = c:/home/git/vault/dist/data/reddit/reddit.html.md.html; result = 10055 } 00:00:07 i #3677 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.hangul.md } 00:00:07 d #3678 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.html.hangul.md; new_path = c:/home/git/vault/dist/data/reddit/reddit.html.hangul.md; result = 116 } 00:00:07 v #3679 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 d #3680 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/reddit/reddit.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/reddit/reddit.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 i #3681 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.hangul.md.epub } 00:00:07 v #3682 > c91cdebfb596107523a7aaa85d93130ea828231b 00:00:07 d #3683 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.hangul.md.epub; result = 5694 } 00:00:07 v #3684 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 i #3685 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.hangul.md.pdf } 00:00:07 d #3686 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/programming/polyglot.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/programming/polyglot.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 d #3687 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.hangul.md.pdf; result = 4010 } 00:00:07 i #3688 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.hangul.md.html } 00:00:07 v #3689 > 4a4ea71442cf5cddadf09561d5d90f8793a3d59b 00:00:07 d #3690 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.hangul.md.html; result = 10350 } 00:00:07 i #3691 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.md.epub } 00:00:07 d #3692 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.md.epub; new_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.md.epub; result = 5560 } 00:00:07 i #3693 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.md.pdf } 00:00:07 v #3694 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 d #3695 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.md.pdf; result = 8020 } 00:00:07 i #3696 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.md.html } 00:00:07 d #3697 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.md.html; new_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.md.html; result = 10165 } 00:00:07 i #3698 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.hangul.md } 00:00:07 i #3699 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/acting.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\acting.hangul.md.epub } 00:00:07 d #3700 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\philosophy.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/philosophy/philosophy.mp3.hangul.md; result = 425 } 00:00:07 d #3701 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\acting.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fiction/acting.hangul.md.epub; result = 12679 } 00:00:07 i #3702 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/acting.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\acting.hangul.md.pdf } 00:00:07 d #3703 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\acting.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/acting.hangul.md.pdf; result = 16893 } 00:00:07 i #3704 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/acting.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\acting.hangul.md.html } 00:00:07 d #3705 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\acting.hangul.md.html; new_path = c:/home/git/vault/dist/data/fiction/acting.hangul.md.html; result = 39218 } 00:00:07 i #3706 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/acting.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\acting.md.epub } 00:00:07 d #3707 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/physics/physics.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/physics/physics.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 d #3708 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\acting.md.epub; new_path = c:/home/git/vault/dist/data/fiction/acting.md.epub; result = 11662 } 00:00:07 i #3709 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/acting.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\acting.md.pdf } 00:00:07 d #3710 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\acting.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/acting.md.pdf; result = 42707 } 00:00:07 i #3711 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/acting.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\acting.md.html } 00:00:07 d #3712 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\acting.md.html; new_path = c:/home/git/vault/dist/data/fiction/acting.md.html; result = 31463 } 00:00:07 i #3713 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/acting.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\acting.hangul.md } 00:00:07 d #3714 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\acting.hangul.md; new_path = c:/home/git/vault/dist/data/fiction/acting.hangul.md; result = 22076 } 00:00:07 v #3715 > 'ec4b8a16420ad46e91e2b296b2d5b9c762efe3f4' 00:00:07 d #3716 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/fiction/animation.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/fiction/animation.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3717 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #3718 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.hangul.md.epub } 00:00:07 d #3719 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.hangul.md.epub; result = 5507 } 00:00:07 i #3720 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.hangul.md.pdf } 00:00:07 d #3721 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.hangul.md.pdf; result = 4375 } 00:00:07 i #3722 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.hangul.md.html } 00:00:07 d #3723 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.hangul.md.html; result = 10079 } 00:00:07 i #3724 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.md.epub } 00:00:07 d #3725 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.md.epub; new_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.md.epub; result = 5446 } 00:00:07 i #3726 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.md.pdf } 00:00:07 d #3727 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.md.pdf; result = 5997 } 00:00:07 i #3728 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.md.html } 00:00:07 d #3729 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.md.html; new_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.md.html; result = 10053 } 00:00:07 i #3730 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.hangul.md } 00:00:07 d #3731 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kakao.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/kakao/kakao.i574n.hangul.md; result = 99 } 00:00:07 v #3732 > '4c062bf0a367b772b3534f98c696ebafc33a1150' 00:00:07 d #3733 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/lastfm/lastfm.fc1943s.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/lastfm/lastfm.fc1943s.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3734 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3735 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fiction/series.mp4.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fiction/series.mp4.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #3736 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3737 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/programming/systems.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/programming/systems.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #3738 > 7f1799bbda143e7281134173a6158c26693bea3b 00:00:07 v #3739 > '95f0e6ecaba1080da86604a202d4376c02c82aa3' 00:00:07 v #3740 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #3741 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.hangul.md.epub } 00:00:07 v #3742 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3743 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/programming/polyglot.html.hangul.md.epub; result = 6839 } 00:00:07 i #3744 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.hangul.md.pdf } 00:00:07 d #3745 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/programming/polyglot.html.hangul.md.pdf; result = 9466 } 00:00:07 i #3746 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.hangul.md.html } 00:00:07 d #3747 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/reddit/reddit.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/reddit/reddit.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 d #3748 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/programming/polyglot.html.hangul.md.html; result = 19814 } 00:00:07 i #3749 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.md.epub } 00:00:07 d #3750 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.md.epub; new_path = c:/home/git/vault/dist/data/programming/polyglot.html.md.epub; result = 6444 } 00:00:07 i #3751 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.md.pdf } 00:00:07 d #3752 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.md.pdf; new_path = c:/home/git/vault/dist/data/programming/polyglot.html.md.pdf; result = 13751 } 00:00:07 i #3753 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.md.html } 00:00:07 d #3754 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.md.html; new_path = c:/home/git/vault/dist/data/programming/polyglot.html.md.html; result = 17575 } 00:00:07 i #3755 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.hangul.md } 00:00:07 d #3756 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.html.hangul.md; new_path = c:/home/git/vault/dist/data/programming/polyglot.html.hangul.md; result = 7076 } 00:00:07 v #3757 > '7b6d0567ef2c3b3065aedba6666cb581431a0f5d' 00:00:07 d #3758 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/programming/polyglot.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/programming/polyglot.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3759 > '72ef8b5bb3dcf0197de50ef5778d97b8cb9a03ac' 00:00:07 v #3760 > '6a22d89b7993d2991e660a9ce858268e16c906fe' 00:00:07 v #3761 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3762 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/physics/physics.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/physics/physics.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #3763 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3764 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/fiction/animation.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/fiction/animation.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #3765 > ec4b8a16420ad46e91e2b296b2d5b9c762efe3f4 00:00:07 v #3766 > 4c062bf0a367b772b3534f98c696ebafc33a1150 00:00:07 v #3767 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3768 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #3769 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #3770 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/series.mp4.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.hangul.md.epub } 00:00:07 d #3771 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fiction/series.mp4.hangul.md.epub; result = 6442 } 00:00:07 i #3772 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/series.mp4.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.hangul.md.pdf } 00:00:07 d #3773 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/series.mp4.hangul.md.pdf; result = 5647 } 00:00:07 i #3774 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/series.mp4.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.hangul.md.html } 00:00:07 d #3775 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.hangul.md.html; new_path = c:/home/git/vault/dist/data/fiction/series.mp4.hangul.md.html; result = 14310 } 00:00:07 i #3776 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/series.mp4.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.md.epub } 00:00:07 d #3777 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.md.epub; new_path = c:/home/git/vault/dist/data/fiction/series.mp4.md.epub; result = 6060 } 00:00:07 i #3778 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/series.mp4.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.md.pdf } 00:00:07 v #3779 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 d #3780 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/series.mp4.md.pdf; result = 10667 } 00:00:07 i #3781 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/series.mp4.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.md.html } 00:00:07 d #3782 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.md.html; new_path = c:/home/git/vault/dist/data/fiction/series.mp4.md.html; result = 12478 } 00:00:07 i #3783 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/series.mp4.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.hangul.md } 00:00:07 d #3784 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\series.mp4.hangul.md; new_path = c:/home/git/vault/dist/data/fiction/series.mp4.hangul.md; result = 3810 } 00:00:07 i #3785 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/systems.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\systems.hangul.md.epub } 00:00:07 d #3786 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\systems.hangul.md.epub; new_path = c:/home/git/vault/dist/data/programming/systems.hangul.md.epub; result = 38046 } 00:00:07 d #3787 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/programming/programming.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/programming/programming.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 i #3788 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/systems.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\systems.hangul.md.pdf } 00:00:07 d #3789 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\systems.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/programming/systems.hangul.md.pdf; result = 76713 } 00:00:07 i #3790 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/systems.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\systems.hangul.md.html } 00:00:07 d #3791 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\systems.hangul.md.html; new_path = c:/home/git/vault/dist/data/programming/systems.hangul.md.html; result = 209377 } 00:00:07 i #3792 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/systems.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\systems.md.epub } 00:00:07 d #3793 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\systems.md.epub; new_path = c:/home/git/vault/dist/data/programming/systems.md.epub; result = 34928 } 00:00:07 i #3794 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/systems.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\systems.md.pdf } 00:00:07 d #3795 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\systems.md.pdf; new_path = c:/home/git/vault/dist/data/programming/systems.md.pdf; result = 167694 } 00:00:07 i #3796 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/systems.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\systems.md.html } 00:00:07 d #3797 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\systems.md.html; new_path = c:/home/git/vault/dist/data/programming/systems.md.html; result = 168633 } 00:00:07 i #3798 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/systems.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\systems.hangul.md } 00:00:07 d #3799 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\systems.hangul.md; new_path = c:/home/git/vault/dist/data/programming/systems.hangul.md; result = 146207 } 00:00:07 d #3800 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/protonmail/protonmail.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/protonmail/protonmail.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3801 > 95f0e6ecaba1080da86604a202d4376c02c82aa3 00:00:07 v #3802 > 'f238a467d3cdbf24b27bc8955e11fc8be38784f5' 00:00:07 v #3803 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #3804 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.hangul.md.epub } 00:00:07 d #3805 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.hangul.md.epub; result = 5447 } 00:00:07 i #3806 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.hangul.md.pdf } 00:00:07 d #3807 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.hangul.md.pdf; result = 3543 } 00:00:07 i #3808 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.hangul.md.html } 00:00:07 v #3809 > 7b6d0567ef2c3b3065aedba6666cb581431a0f5d 00:00:07 v #3809 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3811 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.hangul.md.html; result = 9960 } 00:00:07 i #3812 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.md.epub } 00:00:07 d #3813 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.md.epub; new_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.md.epub; result = 5413 } 00:00:07 i #3814 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.md.pdf } 00:00:07 d #3815 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/programming/polyglot.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/programming/polyglot.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 d #3816 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.md.pdf; result = 4629 } 00:00:07 i #3817 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.md.html } 00:00:07 d #3818 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.md.html; new_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.md.html; result = 9953 } 00:00:07 i #3819 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.hangul.md } 00:00:07 d #3820 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\reddit.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/reddit/reddit.i574n.hangul.md; result = 48 } 00:00:07 v #3821 > 6a22d89b7993d2991e660a9ce858268e16c906fe 00:00:07 d #3822 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/relationships/relationships.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/relationships/relationships.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3823 > 72ef8b5bb3dcf0197de50ef5778d97b8cb9a03ac 00:00:07 v #3824 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #3825 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/physics/physics.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\physics.hangul.md.epub } 00:00:07 d #3826 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\physics.hangul.md.epub; new_path = c:/home/git/vault/dist/data/physics/physics.hangul.md.epub; result = 27593 } 00:00:07 i #3827 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/physics/physics.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\physics.hangul.md.pdf } 00:00:07 d #3828 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\physics.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/physics/physics.hangul.md.pdf; result = 38926 } 00:00:07 i #3829 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/physics/physics.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\physics.hangul.md.html } 00:00:07 d #3830 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\physics.hangul.md.html; new_path = c:/home/git/vault/dist/data/physics/physics.hangul.md.html; result = 147258 } 00:00:07 i #3831 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/physics/physics.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\physics.md.epub } 00:00:07 d #3832 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\physics.md.epub; new_path = c:/home/git/vault/dist/data/physics/physics.md.epub; result = 25466 } 00:00:07 i #3833 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/physics/physics.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\physics.md.pdf } 00:00:07 d #3834 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\physics.md.pdf; new_path = c:/home/git/vault/dist/data/physics/physics.md.pdf; result = 122551 } 00:00:07 i #3835 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/physics/physics.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\physics.md.html } 00:00:07 v #3836 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 v #3837 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 d #3837 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\physics.md.html; new_path = c:/home/git/vault/dist/data/physics/physics.md.html; result = 132638 } 00:00:07 i #3839 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/physics/physics.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\physics.hangul.md } 00:00:07 d #3840 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\physics.hangul.md; new_path = c:/home/git/vault/dist/data/physics/physics.hangul.md; result = 96075 } 00:00:07 i #3841 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/animation.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\animation.hangul.md.epub } 00:00:07 i #3842 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.hangul.md.epub } 00:00:07 d #3843 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\animation.hangul.md.epub; new_path = c:/home/git/vault/dist/data/fiction/animation.hangul.md.epub; result = 30134 } 00:00:07 i #3844 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/animation.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\animation.hangul.md.pdf } 00:00:07 d #3845 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.hangul.md.epub; result = 5672 } 00:00:07 i #3846 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.hangul.md.pdf } 00:00:07 d #3847 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/politics/hanauittang.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/politics/hanauittang.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 d #3848 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.hangul.md.pdf; result = 4886 } 00:00:07 d #3849 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\animation.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/animation.hangul.md.pdf; result = 43350 } 00:00:07 i #3850 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.hangul.md.html } 00:00:07 i #3851 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/animation.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\animation.hangul.md.html } 00:00:07 d #3852 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.hangul.md.html; result = 10521 } 00:00:07 i #3853 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.md.epub } 00:00:07 d #3854 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\animation.hangul.md.html; new_path = c:/home/git/vault/dist/data/fiction/animation.hangul.md.html; result = 123121 } 00:00:07 i #3855 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/animation.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\animation.md.epub } 00:00:07 d #3856 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.md.epub; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.md.epub; result = 5547 } 00:00:07 i #3857 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.md.pdf } 00:00:07 d #3858 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\animation.md.epub; new_path = c:/home/git/vault/dist/data/fiction/animation.md.epub; result = 27052 } 00:00:07 d #3859 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.md.pdf; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.md.pdf; result = 7722 } 00:00:07 i #3860 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/animation.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\animation.md.pdf } 00:00:07 v #3861 > '1860e1828367493856af5299d21caee1ade4df20' 00:00:07 i #3861 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.md.html } 00:00:07 d #3863 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\animation.md.pdf; new_path = c:/home/git/vault/dist/data/fiction/animation.md.pdf; result = 106440 } 00:00:07 d #3863 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.md.html; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.md.html; result = 10351 } 00:00:07 i #3865 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.hangul.md } 00:00:07 i #3866 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/animation.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\animation.md.html } 00:00:07 d #3867 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.html.hangul.md; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.html.hangul.md; result = 465 } 00:00:07 d #3868 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\animation.md.html; new_path = c:/home/git/vault/dist/data/fiction/animation.md.html; result = 90081 } 00:00:07 i #3869 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/fiction/animation.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\animation.hangul.md } 00:00:07 d #3870 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\animation.hangul.md; new_path = c:/home/git/vault/dist/data/fiction/animation.hangul.md; result = 95379 } 00:00:07 d #3871 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/lastfm/lastfm.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/lastfm/lastfm.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 d #3872 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/programming/rust.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/programming/rust.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3873 > '710dc0fd7f3fc16a762129d9543c064715dd40d2' 00:00:07 v #3874 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3875 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/programming/programming.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/programming/programming.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #3876 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3877 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #3878 > f238a467d3cdbf24b27bc8955e11fc8be38784f5 00:00:07 v #3879 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 v #3880 > '830edfbf78b902b8089b82f8ab7edf77a3f45500' 00:00:07 i #3881 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.hangul.md.epub } 00:00:07 d #3882 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.hangul.md.epub; new_path = c:/home/git/vault/dist/data/programming/polyglot.hangul.md.epub; result = 6641 } 00:00:07 i #3883 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.hangul.md.pdf } 00:00:07 d #3884 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/programming/polyglot.hangul.md.pdf; result = 6839 } 00:00:07 i #3885 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.hangul.md.html } 00:00:07 d #3886 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.hangul.md.html; new_path = c:/home/git/vault/dist/data/programming/polyglot.hangul.md.html; result = 16762 } 00:00:07 i #3887 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.md.epub } 00:00:07 d #3888 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.md.epub; new_path = c:/home/git/vault/dist/data/programming/polyglot.md.epub; result = 6626 } 00:00:07 i #3889 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.md.pdf } 00:00:07 d #3890 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.md.pdf; new_path = c:/home/git/vault/dist/data/programming/polyglot.md.pdf; result = 19144 } 00:00:07 i #3891 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.md.html } 00:00:07 d #3892 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.md.html; new_path = c:/home/git/vault/dist/data/programming/polyglot.md.html; result = 22886 } 00:00:07 i #3893 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/polyglot.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.hangul.md } 00:00:07 d #3894 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\polyglot.hangul.md; new_path = c:/home/git/vault/dist/data/programming/polyglot.hangul.md; result = 3844 } 00:00:07 d #3895 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/programming/powershell.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/programming/powershell.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3896 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3897 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/relationships/relationships.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/relationships/relationships.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #3898 > 'e227bef891dcfad0b8ab5951285b9902c2df57bf' 00:00:07 v #3899 > 'e07d15b06c6b6fa86ca180ceca8a26064faca8b2' 00:00:07 v #3900 > 1860e1828367493856af5299d21caee1ade4df20 00:00:07 v #3901 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 v #3902 > '543b669227c1dd7bd85791edff81e3ceabaca885' 00:00:07 d #3903 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/politics/hanauittang.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/politics/hanauittang.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #3904 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3905 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/programming/rust.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/programming/rust.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #3906 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 v #3907 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 i #3908 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.hangul.md.epub } 00:00:07 v #3909 > 710dc0fd7f3fc16a762129d9543c064715dd40d2 00:00:07 d #3910 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 d #3911 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.hangul.md.epub; new_path = c:/home/git/vault/dist/data/programming/programming.hangul.md.epub; result = 12841 } 00:00:07 i #3912 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.hangul.md.pdf } 00:00:07 d #3913 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/programming/programming.hangul.md.pdf; result = 19041 } 00:00:07 i #3914 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.hangul.md.html } 00:00:07 d #3915 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.hangul.md.html; new_path = c:/home/git/vault/dist/data/programming/programming.hangul.md.html; result = 49405 } 00:00:07 i #3916 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.md.epub } 00:00:07 d #3917 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.md.epub; new_path = c:/home/git/vault/dist/data/programming/programming.md.epub; result = 11660 } 00:00:07 i #3918 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.md.pdf } 00:00:07 d #3919 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.md.pdf; new_path = c:/home/git/vault/dist/data/programming/programming.md.pdf; result = 45782 } 00:00:07 i #3920 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.md.html } 00:00:07 d #3921 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.md.html; new_path = c:/home/git/vault/dist/data/programming/programming.md.html; result = 39515 } 00:00:07 i #3922 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.hangul.md } 00:00:07 d #3923 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.hangul.md; new_path = c:/home/git/vault/dist/data/programming/programming.hangul.md; result = 27401 } 00:00:07 d #3924 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/programming/programming.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/programming/programming.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3925 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #3926 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.hangul.md.epub } 00:00:07 d #3927 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.hangul.md.epub; result = 5507 } 00:00:07 i #3928 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.hangul.md.pdf } 00:00:07 d #3929 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.hangul.md.pdf; result = 4534 } 00:00:07 i #3930 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.hangul.md.html } 00:00:07 d #3931 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.hangul.md.html; result = 10083 } 00:00:07 i #3932 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.md.epub } 00:00:07 d #3933 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.md.epub; result = 5444 } 00:00:07 i #3934 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.md.pdf } 00:00:07 d #3935 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.md.pdf; result = 6116 } 00:00:07 i #3936 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.md.html } 00:00:07 d #3937 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.md.html; result = 10055 } 00:00:07 i #3938 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.hangul.md } 00:00:07 d #3939 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.fc1943s.hangul.md; result = 102 } 00:00:07 d #3940 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/protonmail/protonmail.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/protonmail/protonmail.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #3941 > '28de73bf2bd7f24a583576578739461918ed105c' 00:00:07 v #3942 > 830edfbf78b902b8089b82f8ab7edf77a3f45500 00:00:07 v #3943 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #3944 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/programming/powershell.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/programming/powershell.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #3945 > e07d15b06c6b6fa86ca180ceca8a26064faca8b2 00:00:07 v #3946 > e227bef891dcfad0b8ab5951285b9902c2df57bf 00:00:07 v #3947 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #3948 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/relationships/relationships.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\relationships.hangul.md.epub } 00:00:07 d #3949 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\relationships.hangul.md.epub; new_path = c:/home/git/vault/dist/data/relationships/relationships.hangul.md.epub; result = 55585 } 00:00:07 i #3950 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/relationships/relationships.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\relationships.hangul.md.pdf } 00:00:07 v #3951 > 543b669227c1dd7bd85791edff81e3ceabaca885 00:00:07 d #3952 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\relationships.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/relationships/relationships.hangul.md.pdf; result = 72415 } 00:00:07 i #3953 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/relationships/relationships.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\relationships.hangul.md.html } 00:00:07 v #3954 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 v #3955 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 d #3956 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\relationships.hangul.md.html; new_path = c:/home/git/vault/dist/data/relationships/relationships.hangul.md.html; result = 293965 } 00:00:07 i #3957 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/hanauittang.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.hangul.md.epub } 00:00:07 i #3958 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/relationships/relationships.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\relationships.md.epub } 00:00:07 d #3959 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.hangul.md.epub; new_path = c:/home/git/vault/dist/data/politics/hanauittang.hangul.md.epub; result = 185879 } 00:00:07 d #3960 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\relationships.md.epub; new_path = c:/home/git/vault/dist/data/relationships/relationships.md.epub; result = 49354 } 00:00:07 i #3960 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.hangul.md.epub } 00:00:07 i #3962 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/hanauittang.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.hangul.md.pdf } 00:00:07 i #3963 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/relationships/relationships.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\relationships.md.pdf } 00:00:07 d #3964 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.hangul.md.epub; new_path = c:/home/git/vault/dist/data/programming/rust.hangul.md.epub; result = 38622 } 00:00:07 d #3965 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/politics/hanauittang.hangul.md.pdf; result = 231956 } 00:00:07 i #3966 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.hangul.md.pdf } 00:00:07 i #3967 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/hanauittang.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.hangul.md.html } 00:00:07 d #3968 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\relationships.md.pdf; new_path = c:/home/git/vault/dist/data/relationships/relationships.md.pdf; result = 202653 } 00:00:07 i #3969 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/relationships/relationships.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\relationships.md.html } 00:00:07 d #3970 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/programming/rust.hangul.md.pdf; result = 64002 } 00:00:07 i #3971 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.hangul.md.html } 00:00:07 d #3972 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\relationships.md.html; new_path = c:/home/git/vault/dist/data/relationships/relationships.md.html; result = 201038 } 00:00:07 i #3973 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/relationships/relationships.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\relationships.hangul.md } 00:00:07 d #3974 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.hangul.md.html; new_path = c:/home/git/vault/dist/data/programming/rust.hangul.md.html; result = 212516 } 00:00:07 v #3975 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #3976 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.md.epub } 00:00:07 d #3977 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.hangul.md.html; new_path = c:/home/git/vault/dist/data/politics/hanauittang.hangul.md.html; result = 1003874 } 00:00:07 d #3978 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\relationships.hangul.md; new_path = c:/home/git/vault/dist/data/relationships/relationships.hangul.md; result = 252121 } 00:00:07 i #3979 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/hanauittang.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.md.epub } 00:00:07 d #3980 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.md.epub; new_path = c:/home/git/vault/dist/data/programming/rust.md.epub; result = 36741 } 00:00:07 i #3981 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.md.pdf } 00:00:07 d #3982 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.md.epub; new_path = c:/home/git/vault/dist/data/politics/hanauittang.md.epub; result = 165955 } 00:00:07 i #3983 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/hanauittang.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.md.pdf } 00:00:07 d #3984 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/religion/hinduism.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/religion/hinduism.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 i #3985 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.hangul.md.epub } 00:00:07 d #3986 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.md.pdf; new_path = c:/home/git/vault/dist/data/programming/rust.md.pdf; result = 202003 } 00:00:07 i #3987 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.md.html } 00:00:07 d #3988 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.hangul.md.epub; result = 5502 } 00:00:07 i #3989 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.hangul.md.pdf } 00:00:07 d #3990 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.md.pdf; new_path = c:/home/git/vault/dist/data/politics/hanauittang.md.pdf; result = 685702 } 00:00:07 d #3991 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.md.html; new_path = c:/home/git/vault/dist/data/programming/rust.md.html; result = 252122 } 00:00:07 i #3992 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/hanauittang.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.md.html } 00:00:07 i #3993 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.hangul.md } 00:00:07 d #3994 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.hangul.md.pdf; result = 4283 } 00:00:07 i #3995 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.hangul.md.html } 00:00:07 d #3996 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.hangul.md; new_path = c:/home/git/vault/dist/data/programming/rust.hangul.md; result = 150631 } 00:00:07 v #3997 > '6dda630b53f346256f4dc3739236972a6374b3e7' 00:00:07 d #3998 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.hangul.md.html; result = 10079 } 00:00:07 i #3999 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.md.epub } 00:00:07 d #4000 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.md.epub; result = 5441 } 00:00:07 d #4001 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/programming/rust.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/programming/rust.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 d #4002 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.md.html; new_path = c:/home/git/vault/dist/data/politics/hanauittang.md.html; result = 686673 } 00:00:07 i #4003 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/hanauittang.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.hangul.md } 00:00:07 i #4004 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.md.pdf } 00:00:07 d #4005 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.md.pdf; result = 5892 } 00:00:07 d #4006 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hanauittang.hangul.md; new_path = c:/home/git/vault/dist/data/politics/hanauittang.hangul.md; result = 869743 } 00:00:07 i #4006 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.md.html } 00:00:07 d #4008 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.md.html; result = 10049 } 00:00:07 i #4009 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.hangul.md } 00:00:07 d #4010 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.fc1943s.hangul.md; result = 99 } 00:00:07 d #4011 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/politics/politics.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/politics/politics.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 d #4012 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/lastfm/lastfm.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/lastfm/lastfm.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #4013 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #4014 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/programming/programming.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/programming/programming.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #4015 > '8e9bc86a9063f1b960e5ed058ec223d973dfa028' 00:00:07 v #4016 > 28de73bf2bd7f24a583576578739461918ed105c 00:00:07 v #4017 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #4018 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/protonmail/protonmail.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/protonmail/protonmail.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #4019 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #4020 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/powershell.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\powershell.hangul.md.epub } 00:00:07 d #4021 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\powershell.hangul.md.epub; new_path = c:/home/git/vault/dist/data/programming/powershell.hangul.md.epub; result = 5635 } 00:00:07 i #4022 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/powershell.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\powershell.hangul.md.pdf } 00:00:07 d #4023 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\powershell.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/programming/powershell.hangul.md.pdf; result = 4498 } 00:00:07 i #4024 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/powershell.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\powershell.hangul.md.html } 00:00:07 d #4025 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\powershell.hangul.md.html; new_path = c:/home/git/vault/dist/data/programming/powershell.hangul.md.html; result = 10338 } 00:00:07 i #4026 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/powershell.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\powershell.md.epub } 00:00:07 d #4027 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\powershell.md.epub; new_path = c:/home/git/vault/dist/data/programming/powershell.md.epub; result = 5544 } 00:00:07 i #4028 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/powershell.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\powershell.md.pdf } 00:00:07 d #4029 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\powershell.md.pdf; new_path = c:/home/git/vault/dist/data/programming/powershell.md.pdf; result = 7335 } 00:00:07 i #4030 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/powershell.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\powershell.md.html } 00:00:07 d #4031 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\powershell.md.html; new_path = c:/home/git/vault/dist/data/programming/powershell.md.html; result = 10258 } 00:00:07 i #4032 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/powershell.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\powershell.hangul.md } 00:00:07 d #4033 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\powershell.hangul.md; new_path = c:/home/git/vault/dist/data/programming/powershell.hangul.md; result = 296 } 00:00:07 d #4034 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/magic/magic.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/magic/magic.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #4035 > '97aa9fdc238588c6e274a80e391a78474d9ab897' 00:00:07 v #4036 > '434c960bdfe32a4a92597d61bcc65b77abc6ba1b' 00:00:07 v #4037 > '23c4084024f5966ec8b1bbeebb4e3660e8e9e678' 00:00:07 v #4038 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 v #4039 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #4040 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/religion/hinduism.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/religion/hinduism.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 d #4041 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/programming/rust.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/programming/rust.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #4042 > '30411c646f14862f669ca43b0cc4df49622b801f' 00:00:07 v #4043 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 v #4044 > 6dda630b53f346256f4dc3739236972a6374b3e7 00:00:07 d #4045 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/politics/politics.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/politics/politics.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #4046 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 v #4047 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 i #4048 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.hangul.md.epub } 00:00:07 d #4049 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/lastfm/lastfm.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/lastfm/lastfm.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 d #4050 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/programming/programming.mp3.hangul.md.epub; result = 7205 } 00:00:07 i #4051 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.hangul.md.pdf } 00:00:07 d #4052 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/programming/programming.mp3.hangul.md.pdf; result = 5408 } 00:00:07 i #4053 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.hangul.md.html } 00:00:07 d #4054 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/programming/programming.mp3.hangul.md.html; result = 18962 } 00:00:07 i #4055 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.md.epub } 00:00:07 v #4056 > 8e9bc86a9063f1b960e5ed058ec223d973dfa028 00:00:07 d #4057 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.md.epub; new_path = c:/home/git/vault/dist/data/programming/programming.mp3.md.epub; result = 6701 } 00:00:07 i #4058 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.md.pdf } 00:00:07 d #4059 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/programming/programming.mp3.md.pdf; result = 12455 } 00:00:07 i #4060 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.md.html } 00:00:07 d #4061 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.md.html; new_path = c:/home/git/vault/dist/data/programming/programming.mp3.md.html; result = 15388 } 00:00:07 i #4062 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/programming.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.hangul.md } 00:00:07 d #4063 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\programming.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/programming/programming.mp3.hangul.md; result = 8203 } 00:00:07 d #4064 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/psychology/inner-inferno_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/psychology/inner-inferno_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #4065 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #4066 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.hangul.md.epub } 00:00:07 d #4067 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.hangul.md.epub; result = 5530 } 00:00:07 i #4068 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.hangul.md.pdf } 00:00:07 d #4069 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.hangul.md.pdf; result = 3856 } 00:00:07 i #4070 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.hangul.md.html } 00:00:07 d #4071 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.hangul.md.html; result = 10340 } 00:00:07 v #4072 > '7eb090fec8afaa68bc03fd2f8a154dccfc54ccea' 00:00:07 i #4073 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.md.epub } 00:00:07 d #4074 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.md.epub; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.md.epub; result = 5460 } 00:00:07 i #4075 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.md.pdf } 00:00:07 d #4076 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.md.pdf; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.md.pdf; result = 5944 } 00:00:07 i #4077 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.md.html } 00:00:07 d #4078 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.md.html; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.md.html; result = 10260 } 00:00:07 i #4079 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.hangul.md } 00:00:07 d #4080 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.html.hangul.md; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.html.hangul.md; result = 284 } 00:00:07 d #4081 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/protonmail/protonmail.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/protonmail/protonmail.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:07 v #4082 > 97aa9fdc238588c6e274a80e391a78474d9ab897 00:00:07 v #4083 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:07 d #4084 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/magic/magic.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/magic/magic.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:07 v #4085 > 434c960bdfe32a4a92597d61bcc65b77abc6ba1b 00:00:07 v #4086 > 23c4084024f5966ec8b1bbeebb4e3660e8e9e678 00:00:07 v #4087 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:07 i #4088 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/hinduism.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.hangul.md.epub } 00:00:07 d #4089 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.hangul.md.epub; new_path = c:/home/git/vault/dist/data/religion/hinduism.hangul.md.epub; result = 19246 } 00:00:07 i #4090 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/hinduism.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.hangul.md.pdf } 00:00:08 d #4091 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/religion/hinduism.hangul.md.pdf; result = 20885 } 00:00:08 i #4092 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/hinduism.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.hangul.md.html } 00:00:08 v #4093 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 d #4094 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.hangul.md.html; new_path = c:/home/git/vault/dist/data/religion/hinduism.hangul.md.html; result = 81476 } 00:00:08 i #4095 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/hinduism.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.md.epub } 00:00:08 d #4096 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.md.epub; new_path = c:/home/git/vault/dist/data/religion/hinduism.md.epub; result = 17383 } 00:00:08 i #4097 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.hangul.md.epub } 00:00:08 i #4098 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/hinduism.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.md.pdf } 00:00:08 d #4099 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/programming/rust.pdf.hangul.md.epub; result = 7660 } 00:00:08 i #4100 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.hangul.md.pdf } 00:00:08 v #4101 > 30411c646f14862f669ca43b0cc4df49622b801f 00:00:08 d #4102 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.md.pdf; new_path = c:/home/git/vault/dist/data/religion/hinduism.md.pdf; result = 59715 } 00:00:08 d #4103 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/programming/rust.pdf.hangul.md.pdf; result = 7304 } 00:00:08 i #4103 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/hinduism.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.md.html } 00:00:08 i #4105 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.hangul.md.html } 00:00:08 v #4106 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 d #4107 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.md.html; new_path = c:/home/git/vault/dist/data/religion/hinduism.md.html; result = 58848 } 00:00:08 d #4108 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/programming/rust.pdf.hangul.md.html; result = 19553 } 00:00:08 i #4109 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.md.epub } 00:00:08 i #4110 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/hinduism.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.hangul.md } 00:00:08 d #4111 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.md.epub; new_path = c:/home/git/vault/dist/data/programming/rust.pdf.md.epub; result = 7110 } 00:00:08 d #4112 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\hinduism.hangul.md; new_path = c:/home/git/vault/dist/data/religion/hinduism.hangul.md; result = 61430 } 00:00:08 i #4113 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.md.pdf } 00:00:08 i #4114 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.hangul.md.epub } 00:00:08 d #4115 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/religion/kimbanda.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/religion/kimbanda.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 d #4116 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/programming/rust.pdf.md.pdf; result = 14838 } 00:00:08 i #4117 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.md.html } 00:00:08 d #4118 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.hangul.md.epub; new_path = c:/home/git/vault/dist/data/politics/politics.hangul.md.epub; result = 149082 } 00:00:08 i #4120 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.hangul.md.pdf } 00:00:08 d #4119 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.md.html; new_path = c:/home/git/vault/dist/data/programming/rust.pdf.md.html; result = 16513 } 00:00:08 i #4121 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/programming/rust.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.hangul.md } 00:00:08 d #4122 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\rust.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/programming/rust.pdf.hangul.md; result = 8340 } 00:00:08 d #4123 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/politics/politics.hangul.md.pdf; result = 196786 } 00:00:08 i #4124 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.hangul.md.html } 00:00:08 d #4125 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/psychology/psychology.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/psychology/psychology.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 d #4126 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.hangul.md.html; new_path = c:/home/git/vault/dist/data/politics/politics.hangul.md.html; result = 779668 } 00:00:08 i #4127 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.md.epub } 00:00:08 d #4128 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.md.epub; new_path = c:/home/git/vault/dist/data/politics/politics.md.epub; result = 131994 } 00:00:08 i #4129 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.md.pdf } 00:00:08 v #4130 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 d #4131 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.md.pdf; new_path = c:/home/git/vault/dist/data/politics/politics.md.pdf; result = 555188 } 00:00:08 i #4132 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.md.html } 00:00:08 i #4133 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.hangul.md.epub } 00:00:08 d #4134 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.hangul.md.epub; result = 5684 } 00:00:08 d #4135 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.md.html; new_path = c:/home/git/vault/dist/data/politics/politics.md.html; result = 535078 } 00:00:08 i #4136 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.hangul.md.pdf } 00:00:08 i #4137 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.hangul.md } 00:00:08 v #4138 > 'd7255f3394d469cd0f10ddc5400329b9730f52c5' 00:00:08 d #4139 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.hangul.md.pdf; result = 4460 } 00:00:08 d #4140 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.hangul.md; new_path = c:/home/git/vault/dist/data/politics/politics.hangul.md; result = 670043 } 00:00:08 i #4141 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.hangul.md.html } 00:00:08 d #4142 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.hangul.md.html; result = 12646 } 00:00:08 i #4143 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.md.epub } 00:00:08 d #4144 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.md.epub; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.md.epub; result = 5561 } 00:00:08 i #4145 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.md.pdf } 00:00:08 d #4146 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/politics/politics.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/politics/politics.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 d #4147 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.md.pdf; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.md.pdf; result = 7737 } 00:00:08 i #4148 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.md.html } 00:00:08 d #4149 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.md.html; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.md.html; result = 12153 } 00:00:08 i #4150 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.hangul.md } 00:00:08 d #4151 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\lastfm.html.hangul.md; new_path = c:/home/git/vault/dist/data/lastfm/lastfm.html.hangul.md; result = 1700 } 00:00:08 d #4152 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/linux/linux.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/linux/linux.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4153 > '9ac5bde963a16c5a5b9fab686e95f8ed42d40254' 00:00:08 v #4154 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4155 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4156 > 7eb090fec8afaa68bc03fd2f8a154dccfc54ccea 00:00:08 v #4157 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4158 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/protonmail/protonmail.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/protonmail/protonmail.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4159 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 i #4160 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.hangul.md.epub } 00:00:08 d #4161 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/magic/magic.html.hangul.md.epub; result = 5519 } 00:00:08 i #4162 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.hangul.md.pdf } 00:00:08 d #4163 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/magic/magic.html.hangul.md.pdf; result = 3756 } 00:00:08 i #4164 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.hangul.md.html } 00:00:08 d #4165 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/magic/magic.html.hangul.md.html; result = 10098 } 00:00:08 i #4166 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.md.epub } 00:00:08 d #4167 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.md.epub; new_path = c:/home/git/vault/dist/data/magic/magic.html.md.epub; result = 5445 } 00:00:08 i #4168 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.md.pdf } 00:00:08 d #4169 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.md.pdf; new_path = c:/home/git/vault/dist/data/magic/magic.html.md.pdf; result = 5855 } 00:00:08 i #4170 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.md.html } 00:00:08 d #4171 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.md.html; new_path = c:/home/git/vault/dist/data/magic/magic.html.md.html; result = 10064 } 00:00:08 i #4172 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.hangul.md } 00:00:08 d #4173 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.html.hangul.md; new_path = c:/home/git/vault/dist/data/magic/magic.html.hangul.md; result = 130 } 00:00:08 d #4174 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/magic/magic.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/magic/magic.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4175 > 'f511538655cfdcae9b9a4a30a112c5860d9d6c2c' 00:00:08 v #4176 > '8b8616feca251f9df6d044c31d15e1070ce9ef1f' 00:00:08 v #4177 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 v #4178 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 v #4179 > '9dd2ff3e83c994f7a66cf9f856ced92801c3c31f' 00:00:08 d #4180 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/psychology/psychology.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/psychology/psychology.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 d #4181 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/religion/kimbanda.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/religion/kimbanda.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4182 > 'f0caa36f833b2e05a7943dddc61fb7650928f4e5' 00:00:08 v #4183 > d7255f3394d469cd0f10ddc5400329b9730f52c5 00:00:08 v #4184 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4185 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/linux/linux.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/linux/linux.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4186 > 9ac5bde963a16c5a5b9fab686e95f8ed42d40254 00:00:08 v #4187 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 v #4188 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4189 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/politics/politics.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/politics/politics.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 i #4190 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.hangul.md.epub } 00:00:08 d #4191 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.hangul.md.epub; result = 114192 } 00:00:08 i #4192 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.hangul.md.pdf } 00:00:08 d #4193 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.hangul.md.pdf; result = 116341 } 00:00:08 i #4194 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.hangul.md.html } 00:00:08 d #4195 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.hangul.md.html; result = 455079 } 00:00:08 i #4196 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.md.epub } 00:00:08 v #4197 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 d #4198 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.md.epub; result = 100223 } 00:00:08 i #4199 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.md.pdf } 00:00:08 i #4200 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.hangul.md.epub } 00:00:08 d #4201 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.md.pdf; result = 356366 } 00:00:08 i #4202 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.md.html } 00:00:08 d #4203 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.hangul.md.epub; result = 5507 } 00:00:08 i #4204 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.hangul.md.pdf } 00:00:08 d #4205 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.hangul.md.pdf; result = 4376 } 00:00:08 i #4206 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.hangul.md.html } 00:00:08 d #4207 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.md.html; new_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.md.html; result = 317605 } 00:00:08 d #4208 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.hangul.md.html; result = 10079 } 00:00:08 i #4209 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.hangul.md } 00:00:08 i #4210 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.md.epub } 00:00:08 d #4211 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.md.epub; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.md.epub; result = 5443 } 00:00:08 i #4212 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.md.pdf } 00:00:08 d #4213 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\inner-inferno_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/psychology/inner-inferno_pt-br.hangul.md; result = 424276 } 00:00:08 d #4214 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.md.pdf; result = 5902 } 00:00:08 i #4215 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.md.html } 00:00:08 d #4216 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.md.html; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.md.html; result = 10053 } 00:00:08 i #4217 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.hangul.md } 00:00:08 d #4218 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\protonmail.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/protonmail/protonmail.i574n.hangul.md; result = 99 } 00:00:08 d #4219 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/psychology/psychology.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/psychology/psychology.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 d #4220 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/tidal/tidal.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/tidal/tidal.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4221 > 'b9770d8435b744c4b233a8b2b18412137e2d24ce' 00:00:08 v #4222 > 8b8616feca251f9df6d044c31d15e1070ce9ef1f 00:00:08 v #4223 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 v #4224 > f511538655cfdcae9b9a4a30a112c5860d9d6c2c 00:00:08 d #4225 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/magic/magic.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/magic/magic.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4226 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 v #4227 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 i #4228 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.hangul.md.epub } 00:00:08 i #4229 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.hangul.md.epub } 00:00:08 d #4230 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.hangul.md.epub; new_path = c:/home/git/vault/dist/data/religion/kimbanda.hangul.md.epub; result = 18654 } 00:00:08 d #4231 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.hangul.md.epub; result = 6184 } 00:00:08 v #4232 > 9dd2ff3e83c994f7a66cf9f856ced92801c3c31f 00:00:08 i #4233 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.hangul.md.pdf } 00:00:08 i #4234 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.hangul.md.pdf } 00:00:08 d #4235 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/religion/kimbanda.hangul.md.pdf; result = 18451 } 00:00:08 i #4236 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.hangul.md.html } 00:00:08 d #4237 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.hangul.md.pdf; result = 4495 } 00:00:08 i #4238 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.hangul.md.html } 00:00:08 d #4239 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.hangul.md.html; new_path = c:/home/git/vault/dist/data/religion/kimbanda.hangul.md.html; result = 64518 } 00:00:08 d #4240 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.hangul.md.html; result = 12199 } 00:00:08 i #4241 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.md.epub } 00:00:08 i #4242 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.md.epub } 00:00:08 d #4243 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.md.epub; new_path = c:/home/git/vault/dist/data/religion/kimbanda.md.epub; result = 16597 } 00:00:08 d #4244 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.md.epub; new_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.md.epub; result = 5906 } 00:00:08 i #4245 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.md.pdf } 00:00:08 i #4246 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.md.pdf } 00:00:08 d #4247 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.md.pdf; result = 10138 } 00:00:08 d #4248 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.md.pdf; new_path = c:/home/git/vault/dist/data/religion/kimbanda.md.pdf; result = 51633 } 00:00:08 i #4249 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.md.html } 00:00:08 v #4250 > f0caa36f833b2e05a7943dddc61fb7650928f4e5 00:00:08 i #4251 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.md.html } 00:00:08 d #4252 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.md.html; new_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.md.html; result = 11223 } 00:00:08 i #4253 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.hangul.md } 00:00:08 d #4254 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.md.html; new_path = c:/home/git/vault/dist/data/religion/kimbanda.md.html; result = 47826 } 00:00:08 i #4255 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.hangul.md } 00:00:08 d #4256 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/psychology/psychology.mp3.hangul.md; result = 2044 } 00:00:08 d #4257 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.hangul.md; new_path = c:/home/git/vault/dist/data/religion/kimbanda.hangul.md; result = 45510 } 00:00:08 d #4258 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/psychology/psychology.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/psychology/psychology.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 d #4259 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/religion/kimbanda.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/religion/kimbanda.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4260 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 i #4261 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/linux/linux.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\linux.hangul.md.epub } 00:00:08 d #4262 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\linux.hangul.md.epub; new_path = c:/home/git/vault/dist/data/linux/linux.hangul.md.epub; result = 5755 } 00:00:08 i #4263 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/linux/linux.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\linux.hangul.md.pdf } 00:00:08 d #4264 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\linux.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/linux/linux.hangul.md.pdf; result = 6107 } 00:00:08 v #4265 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 i #4266 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/linux/linux.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\linux.hangul.md.html } 00:00:08 d #4267 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\linux.hangul.md.html; new_path = c:/home/git/vault/dist/data/linux/linux.hangul.md.html; result = 14764 } 00:00:08 i #4268 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/linux/linux.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\linux.md.epub } 00:00:08 i #4269 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.hangul.md.epub } 00:00:08 d #4270 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\linux.md.epub; new_path = c:/home/git/vault/dist/data/linux/linux.md.epub; result = 5619 } 00:00:08 d #4271 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/politics/politics.mp3.hangul.md.epub; result = 5704 } 00:00:08 i #4272 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/linux/linux.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\linux.md.pdf } 00:00:08 i #4273 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.hangul.md.pdf } 00:00:08 d #4274 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\linux.md.pdf; new_path = c:/home/git/vault/dist/data/linux/linux.md.pdf; result = 12711 } 00:00:08 d #4275 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/politics/politics.mp3.hangul.md.pdf; result = 4040 } 00:00:08 i #4276 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.hangul.md.html } 00:00:08 i #4277 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/linux/linux.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\linux.md.html } 00:00:08 d #4278 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/politics/politics.mp3.hangul.md.html; result = 10371 } 00:00:08 i #4279 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.md.epub } 00:00:08 d #4280 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\linux.md.html; new_path = c:/home/git/vault/dist/data/linux/linux.md.html; result = 14556 } 00:00:08 i #4281 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/linux/linux.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\linux.hangul.md } 00:00:08 d #4282 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.md.epub; new_path = c:/home/git/vault/dist/data/politics/politics.mp3.md.epub; result = 5565 } 00:00:08 v #4283 > '4ee1f7e9e8ad93249e8717a7c0ab146d70933975' 00:00:08 i #4284 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.md.pdf } 00:00:08 d #4285 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\linux.hangul.md; new_path = c:/home/git/vault/dist/data/linux/linux.hangul.md; result = 577 } 00:00:08 d #4286 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/politics/politics.mp3.md.pdf; result = 8045 } 00:00:08 i #4287 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.md.html } 00:00:08 d #4288 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.md.html; new_path = c:/home/git/vault/dist/data/politics/politics.mp3.md.html; result = 10178 } 00:00:08 i #4289 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.hangul.md } 00:00:08 d #4290 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/politics/politics.mp3.hangul.md; result = 445 } 00:00:08 d #4291 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/religion/religion.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/religion/religion.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4292 > 'aa2d0c55ac0ada3ffecd82f754d1a73ececcdede' 00:00:08 d #4293 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/politics/politics.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/politics/politics.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4294 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4295 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/psychology/psychology.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/psychology/psychology.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4296 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4297 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/tidal/tidal.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/tidal/tidal.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4298 > b9770d8435b744c4b233a8b2b18412137e2d24ce 00:00:08 v #4299 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 i #4300 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.hangul.md.epub } 00:00:08 d #4301 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.hangul.md.epub; new_path = c:/home/git/vault/dist/data/magic/magic.hangul.md.epub; result = 37566 } 00:00:08 i #4302 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.hangul.md.pdf } 00:00:08 d #4303 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/magic/magic.hangul.md.pdf; result = 41493 } 00:00:08 i #4304 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.hangul.md.html } 00:00:08 d #4305 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.hangul.md.html; new_path = c:/home/git/vault/dist/data/magic/magic.hangul.md.html; result = 167307 } 00:00:08 i #4306 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.md.epub } 00:00:08 d #4307 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.md.epub; new_path = c:/home/git/vault/dist/data/magic/magic.md.epub; result = 33524 } 00:00:08 i #4308 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.md.pdf } 00:00:08 d #4309 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.md.pdf; new_path = c:/home/git/vault/dist/data/magic/magic.md.pdf; result = 121215 } 00:00:08 i #4310 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.md.html } 00:00:08 d #4311 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.md.html; new_path = c:/home/git/vault/dist/data/magic/magic.md.html; result = 115157 } 00:00:08 i #4312 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/magic/magic.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\magic.hangul.md } 00:00:08 d #4313 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\magic.hangul.md; new_path = c:/home/git/vault/dist/data/magic/magic.hangul.md; result = 138648 } 00:00:08 v #4314 > 'e62f0064be6a954e4eef32d9f99cc611c1fa53ce' 00:00:08 d #4315 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/streaming/streaming.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/streaming/streaming.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4316 > 'a01a7819daf101c87c2cefedb8ff676668204110' 00:00:08 v #4317 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4318 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/psychology/psychology.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/psychology/psychology.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4319 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4320 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/religion/kimbanda.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/religion/kimbanda.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4321 > 'd239324db5340dd134db4e31f640bda07ff385b7' 00:00:08 v #4322 > '897270ba23b72d3d513ff0d09368a70b0104016e' 00:00:08 v #4323 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4324 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/religion/religion.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/religion/religion.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4325 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 v #4326 > 4ee1f7e9e8ad93249e8717a7c0ab146d70933975 00:00:08 d #4327 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/politics/politics.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/politics/politics.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4328 > aa2d0c55ac0ada3ffecd82f754d1a73ececcdede 00:00:08 v #4329 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 v #4330 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 i #4330 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.hangul.md.epub } 00:00:08 d #4332 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.hangul.md.epub; new_path = c:/home/git/vault/dist/data/psychology/psychology.hangul.md.epub; result = 15614 } 00:00:08 i #4333 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.hangul.md.pdf } 00:00:08 d #4334 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/psychology/psychology.hangul.md.pdf; result = 14813 } 00:00:08 i #4335 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.hangul.md.html } 00:00:08 i #4336 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tidal/tidal.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.hangul.md.epub } 00:00:08 d #4337 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/tidal/tidal.html.hangul.md.epub; result = 5529 } 00:00:08 d #4338 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.hangul.md.html; new_path = c:/home/git/vault/dist/data/psychology/psychology.hangul.md.html; result = 55715 } 00:00:08 i #4339 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.md.epub } 00:00:08 i #4340 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tidal/tidal.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.hangul.md.pdf } 00:00:08 d #4341 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.md.epub; new_path = c:/home/git/vault/dist/data/psychology/psychology.md.epub; result = 14106 } 00:00:08 i #4342 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.md.pdf } 00:00:08 d #4343 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/tidal/tidal.html.hangul.md.pdf; result = 3796 } 00:00:08 i #4344 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tidal/tidal.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.hangul.md.html } 00:00:08 d #4345 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.md.pdf; new_path = c:/home/git/vault/dist/data/psychology/psychology.md.pdf; result = 43003 } 00:00:08 d #4346 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/tidal/tidal.html.hangul.md.html; result = 10308 } 00:00:08 i #4347 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.md.html } 00:00:08 i #4348 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tidal/tidal.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.md.epub } 00:00:08 d #4349 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.md.epub; new_path = c:/home/git/vault/dist/data/tidal/tidal.html.md.epub; result = 5460 } 00:00:08 d #4349 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.md.html; new_path = c:/home/git/vault/dist/data/psychology/psychology.md.html; result = 41442 } 00:00:08 i #4351 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.hangul.md } 00:00:08 i #4352 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tidal/tidal.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.md.pdf } 00:00:08 d #4353 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.hangul.md; new_path = c:/home/git/vault/dist/data/psychology/psychology.hangul.md; result = 38222 } 00:00:08 d #4354 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.md.pdf; new_path = c:/home/git/vault/dist/data/tidal/tidal.html.md.pdf; result = 6040 } 00:00:08 i #4355 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tidal/tidal.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.md.html } 00:00:08 d #4356 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.md.html; new_path = c:/home/git/vault/dist/data/tidal/tidal.html.md.html; result = 10245 } 00:00:08 i #4357 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tidal/tidal.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.hangul.md } 00:00:08 d #4358 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tidal.html.hangul.md; new_path = c:/home/git/vault/dist/data/tidal/tidal.html.hangul.md; result = 252 } 00:00:08 d #4359 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/sex/sex.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/sex/sex.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 d #4360 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/trakt/trakt.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/trakt/trakt.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4361 > '902c3656de437e37a00c83f6be1e981e8a6638bc' 00:00:08 v #4362 > a01a7819daf101c87c2cefedb8ff676668204110 00:00:08 v #4363 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 v #4364 > e62f0064be6a954e4eef32d9f99cc611c1fa53ce 00:00:08 d #4365 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/streaming/streaming.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/streaming/streaming.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4366 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 i #4367 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.hangul.md.epub } 00:00:08 d #4368 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.hangul.md.epub; result = 7175 } 00:00:08 i #4369 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.hangul.md.pdf } 00:00:08 d #4370 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.hangul.md.pdf; result = 7279 } 00:00:08 i #4371 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.hangul.md.html } 00:00:08 v #4372 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 d #4373 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.hangul.md.html; result = 18439 } 00:00:08 i #4374 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.md.epub } 00:00:08 i #4375 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.hangul.md.epub } 00:00:08 v #4376 > d239324db5340dd134db4e31f640bda07ff385b7 00:00:08 d #4377 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.md.epub; new_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.md.epub; result = 6662 } 00:00:08 d #4378 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.hangul.md.epub; result = 5728 } 00:00:08 i #4379 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.md.pdf } 00:00:08 i #4379 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.hangul.md.pdf } 00:00:08 d #4381 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.md.pdf; result = 17083 } 00:00:08 d #4382 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.hangul.md.pdf; result = 4849 } 00:00:08 i #4383 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.md.html } 00:00:08 i #4384 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.hangul.md.html } 00:00:08 d #4385 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.md.html; new_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.md.html; result = 15781 } 00:00:08 d #4386 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.hangul.md.html; result = 10440 } 00:00:08 i #4387 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.hangul.md } 00:00:08 i #4388 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.md.epub } 00:00:08 d #4389 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\kimbanda.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/religion/kimbanda.pdf.hangul.md; result = 6947 } 00:00:08 d #4390 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.md.epub; new_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.md.epub; result = 5596 } 00:00:08 i #4391 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.md.pdf } 00:00:08 d #4392 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.md.pdf; result = 8065 } 00:00:08 v #4393 > 897270ba23b72d3d513ff0d09368a70b0104016e 00:00:08 i #4394 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.md.html } 00:00:08 d #4395 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.md.html; new_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.md.html; result = 10285 } 00:00:08 i #4396 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.hangul.md } 00:00:08 d #4397 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\psychology.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/psychology/psychology.pdf.hangul.md; result = 452 } 00:00:08 d #4398 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/religion/maya.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/religion/maya.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 d #4399 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/security/security.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/security/security.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4400 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 v #4401 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 i #4402 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.hangul.md.epub } 00:00:08 i #4403 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.hangul.md.epub } 00:00:08 d #4404 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/politics/politics.pdf.hangul.md.epub; result = 6288 } 00:00:08 d #4405 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/religion/religion.pdf.hangul.md.epub; result = 5824 } 00:00:08 i #4406 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.hangul.md.pdf } 00:00:08 i #4407 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.hangul.md.pdf } 00:00:08 d #4408 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/politics/politics.pdf.hangul.md.pdf; result = 6161 } 00:00:08 i #4409 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.hangul.md.html } 00:00:08 d #4410 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/religion/religion.pdf.hangul.md.pdf; result = 4929 } 00:00:08 i #4411 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.hangul.md.html } 00:00:08 d #4412 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/politics/politics.pdf.hangul.md.html; result = 15841 } 00:00:08 i #4413 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.md.epub } 00:00:08 d #4414 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/religion/religion.pdf.hangul.md.html; result = 10927 } 00:00:08 i #4415 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.md.epub } 00:00:08 d #4416 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.md.epub; new_path = c:/home/git/vault/dist/data/politics/politics.pdf.md.epub; result = 6009 } 00:00:08 i #4417 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.md.pdf } 00:00:08 d #4418 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.md.epub; new_path = c:/home/git/vault/dist/data/religion/religion.pdf.md.epub; result = 5650 } 00:00:08 i #4419 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.md.pdf } 00:00:08 d #4420 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/politics/politics.pdf.md.pdf; result = 11044 } 00:00:08 i #4421 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.md.html } 00:00:08 d #4422 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/religion/religion.pdf.md.pdf; result = 8117 } 00:00:08 i #4423 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.md.html } 00:00:08 d #4424 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.md.html; new_path = c:/home/git/vault/dist/data/politics/politics.pdf.md.html; result = 13952 } 00:00:08 d #4425 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.md.html; new_path = c:/home/git/vault/dist/data/religion/religion.pdf.md.html; result = 10592 } 00:00:08 i #4426 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/politics/politics.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.hangul.md } 00:00:08 i #4427 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.hangul.md } 00:00:08 d #4428 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\politics.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/politics/politics.pdf.hangul.md; result = 4984 } 00:00:08 d #4429 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/religion/religion.pdf.hangul.md; result = 871 } 00:00:08 d #4430 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/sex/sex.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/sex/sex.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 d #4430 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/science/science.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/science/science.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4432 > 'f5ab0c0ec6a0da97eff29f25566ab657ad94239c' 00:00:08 v #4433 > 'd9dce8b7b3620797caab1846473795f01524ca8d' 00:00:08 v #4434 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4435 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/trakt/trakt.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/trakt/trakt.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4436 > 902c3656de437e37a00c83f6be1e981e8a6638bc 00:00:08 v #4437 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4438 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/sex/sex.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/sex/sex.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4439 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 i #4440 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/streaming/streaming.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\streaming.hangul.md.epub } 00:00:08 d #4441 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\streaming.hangul.md.epub; new_path = c:/home/git/vault/dist/data/streaming/streaming.hangul.md.epub; result = 5384 } 00:00:08 i #4442 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/streaming/streaming.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\streaming.hangul.md.pdf } 00:00:08 d #4443 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\streaming.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/streaming/streaming.hangul.md.pdf; result = 2393 } 00:00:08 i #4444 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/streaming/streaming.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\streaming.hangul.md.html } 00:00:08 d #4445 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\streaming.hangul.md.html; new_path = c:/home/git/vault/dist/data/streaming/streaming.hangul.md.html; result = 9930 } 00:00:08 i #4446 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/streaming/streaming.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\streaming.md.epub } 00:00:08 d #4447 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\streaming.md.epub; new_path = c:/home/git/vault/dist/data/streaming/streaming.md.epub; result = 5384 } 00:00:08 i #4448 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/streaming/streaming.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\streaming.md.pdf } 00:00:08 d #4449 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\streaming.md.pdf; new_path = c:/home/git/vault/dist/data/streaming/streaming.md.pdf; result = 2394 } 00:00:08 i #4450 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/streaming/streaming.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\streaming.md.html } 00:00:08 d #4451 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\streaming.md.html; new_path = c:/home/git/vault/dist/data/streaming/streaming.md.html; result = 9930 } 00:00:08 i #4452 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/streaming/streaming.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\streaming.hangul.md } 00:00:08 d #4453 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\streaming.hangul.md; new_path = c:/home/git/vault/dist/data/streaming/streaming.hangul.md; result = 22 } 00:00:08 v #4454 > '25f903ae29f0ef985ad733040e0ccd6034069834' 00:00:08 d #4455 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/tarot/tarot.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/tarot/tarot.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4456 > '3aff6844c12e37a6a3873c14c6508303b3172a4e' 00:00:08 v #4457 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4458 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/religion/maya.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/religion/maya.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4459 > '58f17b0b255d89f87a9d7d7934f2a2b661f170d7' 00:00:08 v #4460 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4461 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/security/security.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/security/security.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4462 > '7a1a75afcb103cdf4c7663b610486c7c5f728845' 00:00:08 v #4463 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4464 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/sex/sex.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/sex/sex.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4465 > f5ab0c0ec6a0da97eff29f25566ab657ad94239c 00:00:08 v #4466 > d9dce8b7b3620797caab1846473795f01524ca8d 00:00:08 v #4467 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4468 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/science/science.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/science/science.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4469 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 i #4470 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.hangul.md.epub } 00:00:08 d #4471 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/trakt/trakt.html.hangul.md.epub; result = 5630 } 00:00:08 i #4472 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.hangul.md.pdf } 00:00:08 d #4473 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/trakt/trakt.html.hangul.md.pdf; result = 4192 } 00:00:08 i #4474 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.hangul.md.html } 00:00:08 d #4475 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/trakt/trakt.html.hangul.md.html; result = 12587 } 00:00:08 v #4476 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 i #4477 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.md.epub } 00:00:08 d #4478 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.md.epub; new_path = c:/home/git/vault/dist/data/trakt/trakt.html.md.epub; result = 5528 } 00:00:08 i #4479 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.md.pdf } 00:00:08 d #4480 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.md.pdf; new_path = c:/home/git/vault/dist/data/trakt/trakt.html.md.pdf; result = 7427 } 00:00:08 i #4481 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.md.html } 00:00:08 d #4482 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.md.html; new_path = c:/home/git/vault/dist/data/trakt/trakt.html.md.html; result = 12122 } 00:00:08 i #4483 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.hangul.md } 00:00:08 i #4484 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.hangul.md.epub } 00:00:08 d #4485 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.html.hangul.md; new_path = c:/home/git/vault/dist/data/trakt/trakt.html.hangul.md; result = 1641 } 00:00:08 d #4486 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.hangul.md.epub; new_path = c:/home/git/vault/dist/data/sex/sex.hangul.md.epub; result = 29284 } 00:00:08 i #4487 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.hangul.md.pdf } 00:00:08 d #4488 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/sex/sex.hangul.md.pdf; result = 40902 } 00:00:08 i #4489 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.hangul.md.html } 00:00:08 d #4490 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.hangul.md.html; new_path = c:/home/git/vault/dist/data/sex/sex.hangul.md.html; result = 140043 } 00:00:08 d #4491 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/trakt/trakt.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/trakt/trakt.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 i #4492 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.md.epub } 00:00:08 d #4493 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.md.epub; new_path = c:/home/git/vault/dist/data/sex/sex.md.epub; result = 26365 } 00:00:08 i #4494 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.md.pdf } 00:00:08 d #4495 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.md.pdf; new_path = c:/home/git/vault/dist/data/sex/sex.md.pdf; result = 113039 } 00:00:08 i #4496 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.md.html } 00:00:08 d #4497 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.md.html; new_path = c:/home/git/vault/dist/data/sex/sex.md.html; result = 100022 } 00:00:08 i #4498 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.hangul.md } 00:00:08 d #4499 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.hangul.md; new_path = c:/home/git/vault/dist/data/sex/sex.hangul.md; result = 114615 } 00:00:08 d #4500 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/sex/sex.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/sex/sex.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4501 > 'b92c23361ea8f27306695fd0a374f33164c2d7b9' 00:00:08 v #4502 > 25f903ae29f0ef985ad733040e0ccd6034069834 00:00:08 v #4503 > 3aff6844c12e37a6a3873c14c6508303b3172a4e 00:00:08 v #4504 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4505 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/tarot/tarot.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/tarot/tarot.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4506 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 i #4507 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/maya.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maya.hangul.md.epub } 00:00:08 d #4508 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maya.hangul.md.epub; new_path = c:/home/git/vault/dist/data/religion/maya.hangul.md.epub; result = 15629 } 00:00:08 i #4509 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/maya.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maya.hangul.md.pdf } 00:00:08 d #4510 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maya.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/religion/maya.hangul.md.pdf; result = 18707 } 00:00:08 v #4511 > 58f17b0b255d89f87a9d7d7934f2a2b661f170d7 00:00:08 i #4512 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/maya.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maya.hangul.md.html } 00:00:08 v #4513 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 d #4514 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maya.hangul.md.html; new_path = c:/home/git/vault/dist/data/religion/maya.hangul.md.html; result = 65637 } 00:00:08 i #4515 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/maya.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maya.md.epub } 00:00:08 i #4516 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/security/security.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\security.hangul.md.epub } 00:00:08 d #4517 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maya.md.epub; new_path = c:/home/git/vault/dist/data/religion/maya.md.epub; result = 14283 } 00:00:08 i #4518 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/maya.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maya.md.pdf } 00:00:08 d #4519 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\security.hangul.md.epub; new_path = c:/home/git/vault/dist/data/security/security.hangul.md.epub; result = 7156 } 00:00:08 i #4520 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/security/security.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\security.hangul.md.pdf } 00:00:08 d #4521 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maya.md.pdf; new_path = c:/home/git/vault/dist/data/religion/maya.md.pdf; result = 49499 } 00:00:08 i #4522 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/maya.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maya.md.html } 00:00:08 d #4523 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\security.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/security/security.hangul.md.pdf; result = 7094 } 00:00:08 i #4524 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/security/security.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\security.hangul.md.html } 00:00:08 d #4525 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maya.md.html; new_path = c:/home/git/vault/dist/data/religion/maya.md.html; result = 48325 } 00:00:08 i #4526 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/maya.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maya.hangul.md } 00:00:08 d #4527 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\security.hangul.md.html; new_path = c:/home/git/vault/dist/data/security/security.hangul.md.html; result = 19814 } 00:00:08 i #4528 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/security/security.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\security.md.epub } 00:00:08 d #4529 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maya.hangul.md; new_path = c:/home/git/vault/dist/data/religion/maya.hangul.md; result = 46362 } 00:00:08 d #4530 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\security.md.epub; new_path = c:/home/git/vault/dist/data/security/security.md.epub; result = 6751 } 00:00:08 i #4531 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/security/security.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\security.md.pdf } 00:00:08 d #4532 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\security.md.pdf; new_path = c:/home/git/vault/dist/data/security/security.md.pdf; result = 17345 } 00:00:08 d #4533 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/religion/religion.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/religion/religion.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 i #4534 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/security/security.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\security.md.html } 00:00:08 d #4535 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\security.md.html; new_path = c:/home/git/vault/dist/data/security/security.md.html; result = 17735 } 00:00:08 i #4536 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/security/security.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\security.hangul.md } 00:00:08 d #4537 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\security.hangul.md; new_path = c:/home/git/vault/dist/data/security/security.hangul.md; result = 5456 } 00:00:08 v #4538 > 7a1a75afcb103cdf4c7663b610486c7c5f728845 00:00:08 d #4539 runtime.execute_with_options / { file_name = crowbook; arguments = ["--verbose", "--to", "epub", "--single", "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md", "--output", "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.epub", "--set", "epub.version", "3", "html.css.add", "' body { color: #e8e6e3; background-color: #202324; } a { color: #989693; } '"]; options = { command = crowbook --verbose --to epub --single "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md" --output "c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.epub" --set epub.version 3 html.css.add \"' body { color: #e8e6e3; background-color: #202324; } a { color: #989693; } '\" rendering.num_depth 6 rendering.highlight.theme \"Solarized (dark)\"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4540 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 i #4541 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.hangul.md.epub } 00:00:08 d #4542 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/sex/sex.html.hangul.md.epub; result = 5533 } 00:00:08 i #4543 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.hangul.md.pdf } 00:00:08 d #4544 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/sex/sex.html.hangul.md.pdf; result = 3796 } 00:00:08 i #4545 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.hangul.md.html } 00:00:08 d #4546 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/sex/sex.html.hangul.md.html; result = 10300 } 00:00:08 i #4547 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.md.epub } 00:00:08 d #4548 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.md.epub; new_path = c:/home/git/vault/dist/data/sex/sex.html.md.epub; result = 5460 } 00:00:08 i #4549 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.md.pdf } 00:00:08 d #4550 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.md.pdf; new_path = c:/home/git/vault/dist/data/sex/sex.html.md.pdf; result = 6123 } 00:00:08 i #4551 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.md.html } 00:00:08 d #4552 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.md.html; new_path = c:/home/git/vault/dist/data/sex/sex.html.md.html; result = 10237 } 00:00:08 i #4553 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.hangul.md } 00:00:08 d #4554 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.html.hangul.md; new_path = c:/home/git/vault/dist/data/sex/sex.html.hangul.md; result = 243 } 00:00:08 v #4555 ! CROWBOOK 0.17.0 00:00:08 d #4556 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/tech/tech.epub.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/tech/tech.epub.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4557 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 v #4558 > '433ed8d4b7b7738e64d0c29b97820213654a6125' 00:00:08 i #4559 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/science/science.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\science.hangul.md.epub } 00:00:08 d #4560 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\science.hangul.md.epub; new_path = c:/home/git/vault/dist/data/science/science.hangul.md.epub; result = 5988 } 00:00:08 i #4561 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/science/science.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\science.hangul.md.pdf } 00:00:08 d #4562 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\science.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/science/science.hangul.md.pdf; result = 4277 } 00:00:08 i #4563 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/science/science.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\science.hangul.md.html } 00:00:08 d #4564 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\science.hangul.md.html; new_path = c:/home/git/vault/dist/data/science/science.hangul.md.html; result = 11413 } 00:00:08 i #4565 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/science/science.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\science.md.epub } 00:00:08 d #4566 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\science.md.epub; new_path = c:/home/git/vault/dist/data/science/science.md.epub; result = 5763 } 00:00:08 i #4567 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/science/science.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\science.md.pdf } 00:00:08 d #4568 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\science.md.pdf; new_path = c:/home/git/vault/dist/data/science/science.md.pdf; result = 9459 } 00:00:08 i #4569 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/science/science.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\science.md.html } 00:00:08 d #4570 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\science.md.html; new_path = c:/home/git/vault/dist/data/science/science.md.html; result = 10788 } 00:00:08 i #4571 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/science/science.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\science.hangul.md } 00:00:08 d #4572 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\science.hangul.md; new_path = c:/home/git/vault/dist/data/science/science.hangul.md; result = 1351 } 00:00:08 v #4573 > 'baec1a692d0f1fd4592a8a7e32f592a963acdd9f' 00:00:08 v #4574 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4575 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/travel.i574n.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/travel.i574n.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 d #4576 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/trakt/trakt.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/trakt/trakt.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4577 ! 10:54:13 [ERROR] crowbook::book: Inline YAML block could not set String("치틀리") to String("우 리브루 다 이노센시아"): Error converting BookOption: unrecognized key '치틀리' 00:00:08 v #4578 ! 10:54:13 [DEBUG] (1) crowbook::book: Attempting to generate epub... 00:00:08 v #4579 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4580 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/sex/sex.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/sex/sex.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4581 > b92c23361ea8f27306695fd0a374f33164c2d7b9 00:00:08 v #4582 > '327b6216ba5a5c1f5d833a2fc534e1ffcb73ae4a' 00:00:08 v #4583 ! 10:54:13 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #콘테우두 or #콘테우두.md 00:00:08 v #4584 ! 10:54:13 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #인트로두상-프레젠사-이-세르 or #인트로두상-프레젠사-이-세르.md 00:00:08 v #4585 ! 10:54:13 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #파르치-이-이덴치다지 or #파르치-이-이덴치다지.md 00:00:08 v #4586 ! 10:54:13 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #1-이우-소-코녜시두 or #1-이우-소-코녜시두.md 00:00:08 v #4587 ! 10:54:13 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #2-메모리아 or #2-메모리아.md 00:00:08 v #4588 ! 10:54:13 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #3-아-베르다지-두-세르 or #3-아-베르다지-두-세르.md 00:00:08 v #4589 ! 10:54:13 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #4-헤콘실리아상 or #4-헤콘실리아상.md 00:00:08 v #4590 ! 10:54:13 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #파르치-이-이노센시아 or #파르치-이-이노센시아.md 00:00:08 v #4591 ! 10:54:13 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #5-알렝-두-페카두 or #5-알렝-두-페카두.md 00:00:08 v #4592 ! 10:54:13 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #6-웅-문두-헤노바두 or #6-웅-문두-헤노바두.md 00:00:08 v #4593 ! 10:54:13 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #7-멘치-베르다데이라 or #7-멘치-베르다데이라.md 00:00:08 v #4594 ! 10:54:13 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #이필로구 or #이필로구.md 00:00:08 v #4595 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 i #4596 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.hangul.md.epub } 00:00:08 d #4597 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.hangul.md.epub; new_path = c:/home/git/vault/dist/data/tarot/tarot.hangul.md.epub; result = 9358 } 00:00:08 i #4598 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.hangul.md.pdf } 00:00:08 v #4599 ! 10:54:13 [DEBUG] (1) epub_builder::epub: Add resource: "stylesheet.css" 00:00:08 v #4600 ! 10:54:13 [DEBUG] (1) epub_builder::epub: render_opf... 00:00:08 d #4601 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/tarot/tarot.hangul.md.pdf; result = 8973 } 00:00:08 v #4602 ! 10:54:13 [DEBUG] (1) epub_builder::epub: id="title_page.xhtml", mime="application/xhtml+xml" 00:00:08 v #4603 ! 10:54:13 [DEBUG] (1) epub_builder::epub: content = Content { file: "title_page.xhtml", mime: "application/xhtml+xml", itemref: true, cover: false, reftype: Some(TitlePage), title: "Title" } 00:00:08 v #4604 ! 10:54:13 [DEBUG] (1) epub_builder::epub: id="chapter_000.xhtml", mime="application/xhtml+xml" 00:00:08 v #4605 ! 10:54:13 [DEBUG] (1) epub_builder::epub: content = Content { file: "chapter_000.xhtml", mime: "application/xhtml+xml", itemref: true, cover: false, reftype: Some(Text), title: "" } 00:00:08 v #4606 ! 10:54:13 [DEBUG] (1) epub_builder::epub: id="stylesheet.css", mime="text/css" 00:00:08 i #4607 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.hangul.md.html } 00:00:08 v #4608 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 v #4609 ! 10:54:13 [DEBUG] (1) epub_builder::toc: rendered elem: "<li><a href=\"title_page.xhtml\">Title</a></li>" 00:00:08 d #4610 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.hangul.md.html; new_path = c:/home/git/vault/dist/data/tarot/tarot.hangul.md.html; result = 28941 } 00:00:08 i #4611 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.md.epub } 00:00:08 d #4612 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.md.epub; new_path = c:/home/git/vault/dist/data/tarot/tarot.md.epub; result = 8601 } 00:00:08 d #4613 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/religion/religion.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/religion/religion.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 i #4614 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.md.pdf } 00:00:08 d #4615 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.md.pdf; new_path = c:/home/git/vault/dist/data/tarot/tarot.md.pdf; result = 24161 } 00:00:08 i #4616 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.md.html } 00:00:08 d #4617 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.md.html; new_path = c:/home/git/vault/dist/data/tarot/tarot.md.html; result = 23831 } 00:00:08 v #4618 > 'ce9b990b441bbf282d3a181c9f07e2ce7c0a9b24' 00:00:08 i #4619 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.hangul.md } 00:00:08 d #4620 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.hangul.md; new_path = c:/home/git/vault/dist/data/tarot/tarot.hangul.md; result = 13792 } 00:00:08 d #4621 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/tarot/tarot.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/tarot/tarot.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4622 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 d #4623 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/tech/tech.epub.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/tech/tech.epub.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 v #4624 > 433ed8d4b7b7738e64d0c29b97820213654a6125 00:00:08 v #4625 > 'f62a266ecd504e3ac125c4bce1699e040ea49c9f' 00:00:08 v #4626 > baec1a692d0f1fd4592a8a7e32f592a963acdd9f 00:00:08 v #4627 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 v #4628 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:08 i #4629 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.hangul.md.epub } 00:00:08 d #4630 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.hangul.md.epub; result = 5501 } 00:00:08 i #4631 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.hangul.md.pdf } 00:00:08 d #4632 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/travel.i574n.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/travel.i574n.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:08 d #4633 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.hangul.md.pdf; result = 4136 } 00:00:08 i #4634 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.hangul.md.html } 00:00:08 d #4635 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.hangul.md.html; result = 10078 } 00:00:08 i #4636 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.md.epub } 00:00:08 d #4637 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.md.epub; new_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.md.epub; result = 5441 } 00:00:08 i #4638 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.md.pdf } 00:00:08 d #4639 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.md.pdf; result = 5837 } 00:00:08 i #4640 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.md.html } 00:00:08 d #4641 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.md.html; new_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.md.html; result = 10048 } 00:00:08 i #4642 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.hangul.md } 00:00:08 d #4643 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\trakt.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/trakt/trakt.i574n.hangul.md; result = 98 } 00:00:08 d #4644 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/maps.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/maps.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:08 v #4645 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:08 i #4646 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.hangul.md.epub } 00:00:08 d #4647 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/sex/sex.mp3.hangul.md.epub; result = 5769 } 00:00:08 i #4648 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.hangul.md.pdf } 00:00:08 d #4649 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/sex/sex.mp3.hangul.md.pdf; result = 3974 } 00:00:08 i #4650 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.hangul.md.html } 00:00:08 d #4651 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/sex/sex.mp3.hangul.md.html; result = 10645 } 00:00:08 i #4652 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.md.epub } 00:00:08 d #4653 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.md.epub; new_path = c:/home/git/vault/dist/data/sex/sex.mp3.md.epub; result = 5606 } 00:00:08 i #4654 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.md.pdf } 00:00:08 d #4655 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/sex/sex.mp3.md.pdf; result = 8600 } 00:00:08 i #4656 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.md.html } 00:00:08 d #4657 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.md.html; new_path = c:/home/git/vault/dist/data/sex/sex.mp3.md.html; result = 10320 } 00:00:08 i #4658 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.hangul.md } 00:00:08 d #4659 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/sex/sex.mp3.hangul.md; result = 674 } 00:00:08 d #4660 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/sex/sex.pdf.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/sex/sex.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 v #4661 > 327b6216ba5a5c1f5d833a2fc534e1ffcb73ae4a 00:00:09 v #4662 > '2d97fefeab8e7ffa5f55735db347b2e66256a5ab' 00:00:09 v #4663 > ce9b990b441bbf282d3a181c9f07e2ce7c0a9b24 00:00:09 v #4664 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #4665 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.hangul.md.epub } 00:00:09 d #4666 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.hangul.md.epub; new_path = c:/home/git/vault/dist/data/religion/religion.hangul.md.epub; result = 72062 } 00:00:09 i #4667 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.hangul.md.pdf } 00:00:09 d #4668 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/religion/religion.hangul.md.pdf; result = 98482 } 00:00:09 i #4669 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.hangul.md.html } 00:00:09 d #4670 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.hangul.md.html; new_path = c:/home/git/vault/dist/data/religion/religion.hangul.md.html; result = 321854 } 00:00:09 i #4671 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.md.epub } 00:00:09 v #4672 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #4673 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.md.epub; new_path = c:/home/git/vault/dist/data/religion/religion.md.epub; result = 64504 } 00:00:09 i #4674 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.md.pdf } 00:00:09 d #4675 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/tarot/tarot.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/tarot/tarot.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 v #4676 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 d #4677 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.md.pdf; new_path = c:/home/git/vault/dist/data/religion/religion.md.pdf; result = 256055 } 00:00:09 i #4678 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.md.html } 00:00:09 i #4679 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.epub.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.hangul.md.epub } 00:00:09 d #4680 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.md.html; new_path = c:/home/git/vault/dist/data/religion/religion.md.html; result = 226791 } 00:00:09 i #4681 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/religion/religion.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\religion.hangul.md } 00:00:09 d #4682 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.hangul.md.epub; new_path = c:/home/git/vault/dist/data/tech/tech.epub.hangul.md.epub; result = 5841 } 00:00:09 i #4683 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.epub.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.hangul.md.pdf } 00:00:09 d #4684 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/tech/tech.epub.hangul.md.pdf; result = 5372 } 00:00:09 d #4684 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\religion.hangul.md; new_path = c:/home/git/vault/dist/data/religion/religion.hangul.md; result = 270097 } 00:00:09 i #4686 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.epub.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.hangul.md.html } 00:00:09 d #4687 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.hangul.md.html; new_path = c:/home/git/vault/dist/data/tech/tech.epub.hangul.md.html; result = 10873 } 00:00:09 i #4688 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.epub.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.md.epub } 00:00:09 v #4689 > f62a266ecd504e3ac125c4bce1699e040ea49c9f 00:00:09 d #4690 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.md.epub; new_path = c:/home/git/vault/dist/data/tech/tech.epub.md.epub; result = 5684 } 00:00:09 d #4691 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/travel.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/travel.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 i #4692 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.epub.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.md.pdf } 00:00:09 v #4693 > 'daf8c13f5f3fef473a3e956b4af9cadf20318223' 00:00:09 d #4694 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.md.pdf; new_path = c:/home/git/vault/dist/data/tech/tech.epub.md.pdf; result = 11733 } 00:00:09 i #4695 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.epub.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.md.html } 00:00:09 d #4696 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.md.html; new_path = c:/home/git/vault/dist/data/tech/tech.epub.md.html; result = 10685 } 00:00:09 i #4697 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.epub.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.hangul.md } 00:00:09 d #4698 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.epub.hangul.md; new_path = c:/home/git/vault/dist/data/tech/tech.epub.hangul.md; result = 791 } 00:00:09 d #4699 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/tech/tech.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/tech/tech.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 v #4700 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 v #4701 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 i #4702 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.hangul.md.epub } 00:00:09 d #4703 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/maps.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/maps.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 d #4704 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.hangul.md.epub; result = 5362 } 00:00:09 i #4705 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.hangul.md.pdf } 00:00:09 d #4706 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.hangul.md.pdf; result = 2203 } 00:00:09 i #4707 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.hangul.md.html } 00:00:09 d #4708 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.hangul.md.html; result = 9878 } 00:00:09 i #4709 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.md.epub } 00:00:09 d #4710 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.md.epub; result = 5363 } 00:00:09 i #4711 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.md.pdf } 00:00:09 d #4712 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.md.pdf; result = 2204 } 00:00:09 i #4713 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.md.html } 00:00:09 d #4714 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.md.html; result = 9878 } 00:00:09 i #4715 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.hangul.md } 00:00:09 d #4716 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.html.hangul.md; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.html.hangul.md; result = 15 } 00:00:09 d #4717 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/travel.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/travel.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 v #4718 ! 10:54:13 [INFO] crowbook::book: Succesfully generated EPUB: data\spirituality\the-book-of-innocence_pt-br.hangul.md.epub 00:00:09 v #4719 > '51956f3580c89e1921acf278708d688e116e3f1b' 00:00:09 v #4720 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 3272 } 00:00:09 w #4721 documents.crowbook / result contains ERROR / { exit_code = 0; output_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.epub; result = CROWBOOK 0.17.0 10:54:13 [ERROR] crowbook::book: Inline YAML block could not set String("치틀리") to String("우 리브루 다 이노센시아"): Error converting BookOption: unrecognized key '치틀리' 10:54:13 [DEBUG] (1) crowbook::book: Attempting to generate epub... 10:54:13 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #콘테우두 or #콘테우두.md 10:54:13 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #인트로두상-프레젠사-이-세르 or #인트로두상-프레젠사-이-세르.md 10:54:13 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #파르치-이-이덴치다지 or #파르치-이-이덴치다지.md 10:54:13 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #1-이우-소-코녜시두 or #1-이우-소-코녜시두.md 10:54:13 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #2-메모리아 or #2-메모리아.md 10:54:13 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #3-아-베르다지-두-세르 or #3-아-베르다지-두-세르.md 10:54:13 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #4-헤콘실리아상 or #4-헤콘실리아상.md 10:54:13 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #파르치-이-이노센시아 or #파르치-이-이노센시아.md 10:54:13 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #5-알렝-두-페카두 or #5-알렝-두-페카두.md 10:54:13 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #6-웅-문두-헤노바두 or #6-웅-문두-헤노바두.md 10:54:13 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #7-멘치-베르다데이라 or #7-멘치-베르다데이라.md 10:54:13 [WARN] crowbook::resource_handler: Resources: could not find an in-book match for link #이필로구 or #이필로구.md 10:54:13 [DEBUG] (1) epub_builder::epub: Add resource: "stylesheet.css" 10:54:13 [DEBUG] (1) epub_builder::epub: render_opf... 10:54:13 [DEBUG] (1) epub_builder::epub: id="title_page.xhtml", mime="application/xhtml+xml" 10:54:13 [DEBUG] (1) epub_builder::epub: content = Content { file: "title_page.xhtml", mime: "application/xhtml+xml", itemref: true, cover: false, reftype: Some(TitlePage), title: "Title" } 10:54:13 [DEBUG] (1) epub_builder::epub: id="chapter_000.xhtml", mime="application/xhtml+xml" 10:54:13 [DEBUG] (1) epub_builder::epub: content = Content { file: "chapter_000.xhtml", mime: "application/xhtml+xml", itemref: true, cover: false, reftype: Some(Text), title: "" } 10:54:13 [DEBUG] (1) epub_builder::epub: id="stylesheet.css", mime="text/css" 10:54:13 [DEBUG] (1) epub_builder::toc: rendered elem: "<li><a href=\"title_page.xhtml\">Title</a></li>" 10:54:13 [INFO] crowbook::book: Succesfully generated EPUB: data\spirituality\the-book-of-innocence_pt-br.hangul.md.epub } 00:00:09 d #4722 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/tech/tech.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/tech/tech.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 v #4723 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #4724 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/sex/sex.pdf.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/sex/sex.pdf.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 v #4725 > 2d97fefeab8e7ffa5f55735db347b2e66256a5ab 00:00:09 v #4726 > 'b79898a204e337d6041af09f1180e9bb942a748f' 00:00:09 v #4727 > 'f6484cd8dfbe67b79ff014884bc0814b04524d8f' 00:00:09 v #4728 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 v #4729 > daf8c13f5f3fef473a3e956b4af9cadf20318223 00:00:09 v #4730 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #4731 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/travel.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/travel.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 i #4731 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.hangul.md.epub } 00:00:09 d #4733 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/tarot/tarot.png.hangul.md.epub; result = 5607 } 00:00:09 i #4734 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.hangul.md.pdf } 00:00:09 d #4735 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/tarot/tarot.png.hangul.md.pdf; result = 2203 } 00:00:09 i #4736 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.hangul.md.html } 00:00:09 d #4737 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/tarot/tarot.png.hangul.md.html; result = 10198 } 00:00:09 i #4738 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.md.epub } 00:00:09 d #4739 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.md.epub; new_path = c:/home/git/vault/dist/data/tarot/tarot.png.md.epub; result = 5494 } 00:00:09 i #4740 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.md.pdf } 00:00:09 d #4741 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.md.pdf; new_path = c:/home/git/vault/dist/data/tarot/tarot.png.md.pdf; result = 2205 } 00:00:09 i #4742 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.md.html } 00:00:09 v #4743 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #4744 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.md.html; new_path = c:/home/git/vault/dist/data/tarot/tarot.png.md.html; result = 10083 } 00:00:09 i #4745 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tarot/tarot.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.hangul.md } 00:00:09 d #4746 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tarot.png.hangul.md; new_path = c:/home/git/vault/dist/data/tarot/tarot.png.hangul.md; result = 259 } 00:00:09 v #4747 > '712d483c2c968e06911669449f9762c05719c90d' 00:00:09 d #4748 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/tech/tech.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/tech/tech.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 v #4749 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #4750 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.hangul.md.epub } 00:00:09 d #4751 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/tech/devilopment_pt-br.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/tech/devilopment_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 d #4752 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/maps.html.hangul.md.epub; result = 5993 } 00:00:09 i #4753 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.hangul.md.pdf } 00:00:09 d #4754 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/maps.html.hangul.md.pdf; result = 6239 } 00:00:09 i #4755 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.hangul.md.html } 00:00:09 d #4756 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/maps.html.hangul.md.html; result = 12304 } 00:00:09 i #4757 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.md.epub } 00:00:09 d #4758 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.md.epub; new_path = c:/home/git/vault/dist/data/travel/maps.html.md.epub; result = 5913 } 00:00:09 i #4759 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.md.pdf } 00:00:09 d #4760 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.md.pdf; new_path = c:/home/git/vault/dist/data/travel/maps.html.md.pdf; result = 10862 } 00:00:09 i #4761 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.md.html } 00:00:09 v #4762 > 'dbd21ab4ac717628529cc164cd4fb958c4034b9e' 00:00:09 d #4763 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.md.html; new_path = c:/home/git/vault/dist/data/travel/maps.html.md.html; result = 13133 } 00:00:09 i #4764 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.hangul.md } 00:00:09 d #4765 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.html.hangul.md; new_path = c:/home/git/vault/dist/data/travel/maps.html.hangul.md; result = 1439 } 00:00:09 d #4766 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/maps.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/maps.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 v #4767 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #4768 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/travel.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/travel.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 v #4769 > 51956f3580c89e1921acf278708d688e116e3f1b 00:00:09 v #4770 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #4771 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/tech/tech.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/tech/tech.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 v #4772 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #4773 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.pdf.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.hangul.md.epub } 00:00:09 d #4774 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.hangul.md.epub; new_path = c:/home/git/vault/dist/data/sex/sex.pdf.hangul.md.epub; result = 5811 } 00:00:09 i #4775 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.pdf.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.hangul.md.pdf } 00:00:09 d #4776 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/sex/sex.pdf.hangul.md.pdf; result = 5119 } 00:00:09 i #4777 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.pdf.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.hangul.md.html } 00:00:09 d #4778 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.hangul.md.html; new_path = c:/home/git/vault/dist/data/sex/sex.pdf.hangul.md.html; result = 10897 } 00:00:09 i #4779 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.pdf.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.md.epub } 00:00:09 d #4780 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.md.epub; new_path = c:/home/git/vault/dist/data/sex/sex.pdf.md.epub; result = 5651 } 00:00:09 i #4781 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.pdf.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.md.pdf } 00:00:09 v #4782 > b79898a204e337d6041af09f1180e9bb942a748f 00:00:09 d #4783 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.md.pdf; new_path = c:/home/git/vault/dist/data/sex/sex.pdf.md.pdf; result = 8529 } 00:00:09 i #4784 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.pdf.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.md.html } 00:00:09 d #4785 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.md.html; new_path = c:/home/git/vault/dist/data/sex/sex.pdf.md.html; result = 10593 } 00:00:09 i #4786 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/sex/sex.pdf.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.hangul.md } 00:00:09 d #4787 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\sex.pdf.hangul.md; new_path = c:/home/git/vault/dist/data/sex/sex.pdf.hangul.md; result = 820 } 00:00:09 d #4788 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/spiral/spiral.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/spiral/spiral.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 v #4789 > f6484cd8dfbe67b79ff014884bc0814b04524d8f 00:00:09 v #4790 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #4791 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.hangul.md.epub } 00:00:09 v #4792 > '2cd8a3611d7dca4b0dcd9d90df384a74128467d6' 00:00:09 d #4793 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.png.hangul.md.epub; result = 6296 } 00:00:09 i #4794 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.hangul.md.pdf } 00:00:09 d #4795 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.png.hangul.md.pdf; result = 2205 } 00:00:09 i #4796 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.hangul.md.html } 00:00:09 d #4797 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.png.hangul.md.html; result = 14526 } 00:00:09 i #4798 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.md.epub } 00:00:09 d #4799 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.png.md.epub; result = 6044 } 00:00:09 i #4800 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.md.pdf } 00:00:09 v #4801 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 d #4802 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.png.md.pdf; result = 2202 } 00:00:09 i #4803 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.md.html } 00:00:09 d #4804 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.png.md.html; result = 12932 } 00:00:09 i #4805 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.hangul.md } 00:00:09 i #4806 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.hangul.md.epub } 00:00:09 d #4807 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.png.hangul.md; new_path = c:/home/git/vault/dist/data/travel/travel.png.hangul.md; result = 4067 } 00:00:09 d #4808 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/tech/tech.html.hangul.md.epub; result = 5743 } 00:00:09 i #4809 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.hangul.md.pdf } 00:00:09 d #4810 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/tech/tech.html.hangul.md.pdf; result = 5098 } 00:00:09 i #4811 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.hangul.md.html } 00:00:09 d #4812 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/tech/tech.html.hangul.md.html; result = 11790 } 00:00:09 d #4813 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/twitter/twitter.fc1943s.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/twitter/twitter.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 i #4814 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.md.epub } 00:00:09 v #4815 > 712d483c2c968e06911669449f9762c05719c90d 00:00:09 d #4816 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.md.epub; new_path = c:/home/git/vault/dist/data/tech/tech.html.md.epub; result = 5604 } 00:00:09 i #4817 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.md.pdf } 00:00:09 d #4818 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.md.pdf; new_path = c:/home/git/vault/dist/data/tech/tech.html.md.pdf; result = 7847 } 00:00:09 v #4819 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 i #4820 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.md.html } 00:00:09 d #4821 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.md.html; new_path = c:/home/git/vault/dist/data/tech/tech.html.md.html; result = 11467 } 00:00:09 i #4822 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.hangul.md } 00:00:09 d #4823 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/tech/devilopment_pt-br.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/tech/devilopment_pt-br.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 d #4824 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.html.hangul.md; new_path = c:/home/git/vault/dist/data/tech/tech.html.hangul.md; result = 1180 } 00:00:09 v #4825 > 'd3de83b9d0a0577cf26f194c7adad8192d14da8b' 00:00:09 d #4826 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/travel.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/travel.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 v #4827 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 v #4828 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 d #4829 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/maps.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/maps.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 i #4830 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.hangul.md.epub } 00:00:09 d #4831 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md.epub; result = 10180 } 00:00:09 i #4832 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.hangul.md.html } 00:00:09 d #4833 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md.html; result = 27037 } 00:00:09 i #4834 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.md.epub } 00:00:09 d #4835 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.md.epub; result = 9597 } 00:00:09 i #4836 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.md.html } 00:00:09 d #4837 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.md.html; result = 22977 } 00:00:09 i #4838 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.hangul.md } 00:00:09 v #4839 > dbd21ab4ac717628529cc164cd4fb958c4034b9e 00:00:09 d #4840 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md; result = 13840 } 00:00:09 d #4841 runtime.execute_with_options / { file_name = crowbook; arguments = ["--verbose", "--to", "pdf", "--single", "c:/home/git/vault/dist/data/travel/travel.i574n.md", "--output", "c:/home/git/vault/dist/data/travel/travel.i574n.md.pdf", "--set", "tex.paper.size", "a4paper", "tex.template.add", "\\pagenumbering{gobble}", "rendering.num_depth", "6", "rendering.highlight.theme", "Solarized (dark)"]; options = { command = crowbook --verbose --to pdf --single "c:/home/git/vault/dist/data/travel/travel.i574n.md" --output "c:/home/git/vault/dist/data/travel/travel.i574n.md.pdf" --set tex.paper.size a4paper tex.template.add "\pagenumbering{gobble}" rendering.num_depth 6 rendering.highlight.theme \"Solarized (dark)\"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 v #4842 ! CROWBOOK 0.17.0 00:00:09 v #4843 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 v #4844 ! 10:54:13 [DEBUG] (1) crowbook::book: Ignoring YAML block: 00:00:09 v #4845 ! 00:00:09 v #4846 ! 10:54:13 [DEBUG] (1) crowbook::book: Attempting to generate pdf... 00:00:09 i #4847 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.hangul.md.epub } 00:00:09 v #4848 ! 10:54:13 [DEBUG] (1) crowbook::latex: Attempting to run LaTeX on generated file 00:00:09 d #4849 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.hangul.md.epub; new_path = c:/home/git/vault/dist/data/tech/tech.hangul.md.epub; result = 53889 } 00:00:09 i #4850 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.hangul.md.pdf } 00:00:09 d #4851 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/tech/tech.hangul.md.pdf; result = 69457 } 00:00:09 i #4852 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.hangul.md.html } 00:00:09 d #4853 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.hangul.md.html; new_path = c:/home/git/vault/dist/data/tech/tech.hangul.md.html; result = 241674 } 00:00:09 i #4854 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.md.epub } 00:00:09 d #4855 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.md.epub; new_path = c:/home/git/vault/dist/data/tech/tech.md.epub; result = 47893 } 00:00:09 i #4856 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.md.pdf } 00:00:09 d #4857 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.md.pdf; new_path = c:/home/git/vault/dist/data/tech/tech.md.pdf; result = 183036 } 00:00:09 i #4858 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.md.html } 00:00:09 d #4859 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.md.html; new_path = c:/home/git/vault/dist/data/tech/tech.md.html; result = 167600 } 00:00:09 i #4860 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.hangul.md } 00:00:09 d #4861 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.hangul.md; new_path = c:/home/git/vault/dist/data/tech/tech.hangul.md; result = 198404 } 00:00:09 d #4862 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/tech/tech.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/tech/tech.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 v #4863 > '9221f70d039b313ba746570ae387c6327e437490' 00:00:09 v #4864 > 2cd8a3611d7dca4b0dcd9d90df384a74128467d6 00:00:09 v #4865 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #4866 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/spiral/spiral.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/spiral/spiral.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 v #4867 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #4868 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.hangul.md.epub } 00:00:09 v #4869 > d3de83b9d0a0577cf26f194c7adad8192d14da8b 00:00:09 v #4870 > 'c325341c0da447957840c68bfae7175d63d047d8' 00:00:09 d #4871 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.hangul.md.epub; new_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.hangul.md.epub; result = 85747 } 00:00:09 i #4872 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.hangul.md.pdf } 00:00:09 v #4873 > '25e72ff235ebd8e4660d7ff3fc112cecd828b9ac' 00:00:09 d #4874 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.hangul.md.pdf; result = 85914 } 00:00:09 i #4875 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.hangul.md.html } 00:00:09 d #4876 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.hangul.md.html; new_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.hangul.md.html; result = 346771 } 00:00:09 i #4877 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.md.epub } 00:00:09 d #4878 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.md.epub; new_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.md.epub; result = 74774 } 00:00:09 i #4879 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.md.pdf } 00:00:09 d #4880 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.md.pdf; new_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.md.pdf; result = 263658 } 00:00:09 i #4881 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.md.html } 00:00:09 d #4882 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.md.html; new_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.md.html; result = 235095 } 00:00:09 i #4883 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.hangul.md } 00:00:09 d #4884 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\devilopment_pt-br.hangul.md; new_path = c:/home/git/vault/dist/data/tech/devilopment_pt-br.hangul.md; result = 323167 } 00:00:09 v #4885 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #4886 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/travel.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/travel.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 d #4887 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/north korea.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/north korea.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 v #4888 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 v #4889 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 i #4890 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.hangul.md.epub } 00:00:09 d #4891 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/twitter/twitter.fc1943s.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/twitter/twitter.fc1943s.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 d #4892 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/maps.hangul.md.epub; result = 8554 } 00:00:09 i #4893 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.hangul.md.pdf } 00:00:09 d #4894 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/maps.hangul.md.pdf; result = 11793 } 00:00:09 i #4895 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.hangul.md.html } 00:00:09 d #4896 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/maps.hangul.md.html; result = 27046 } 00:00:09 i #4897 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.md.epub } 00:00:09 d #4898 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.md.epub; new_path = c:/home/git/vault/dist/data/travel/maps.md.epub; result = 8072 } 00:00:09 i #4899 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.md.pdf } 00:00:09 d #4900 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.md.pdf; new_path = c:/home/git/vault/dist/data/travel/maps.md.pdf; result = 26462 } 00:00:09 i #4901 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.md.html } 00:00:09 d #4902 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.md.html; new_path = c:/home/git/vault/dist/data/travel/maps.md.html; result = 23119 } 00:00:09 i #4903 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.hangul.md } 00:00:09 d #4904 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.hangul.md; new_path = c:/home/git/vault/dist/data/travel/maps.hangul.md; result = 10495 } 00:00:09 d #4905 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/maps.png.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/maps.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 v #4906 > '4bf711ead74e2dd67aa74d62261c165a741a2013' 00:00:09 v #4907 > 9221f70d039b313ba746570ae387c6327e437490 00:00:09 v #4908 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 v #4909 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 i #4910 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spiral/spiral.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.hangul.md.epub } 00:00:09 d #4911 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/spiral/spiral.html.hangul.md.epub; result = 5536 } 00:00:09 i #4912 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spiral/spiral.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.hangul.md.pdf } 00:00:09 d #4913 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/tech/tech.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/tech/tech.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 d #4914 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/spiral/spiral.html.hangul.md.pdf; result = 3815 } 00:00:09 i #4915 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spiral/spiral.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.hangul.md.html } 00:00:09 d #4916 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/spiral/spiral.html.hangul.md.html; result = 10126 } 00:00:09 i #4917 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spiral/spiral.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.md.epub } 00:00:09 d #4918 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.md.epub; new_path = c:/home/git/vault/dist/data/spiral/spiral.html.md.epub; result = 5459 } 00:00:09 i #4919 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spiral/spiral.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.md.pdf } 00:00:09 d #4920 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.md.pdf; new_path = c:/home/git/vault/dist/data/spiral/spiral.html.md.pdf; result = 6191 } 00:00:09 i #4921 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spiral/spiral.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.md.html } 00:00:09 d #4922 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.md.html; new_path = c:/home/git/vault/dist/data/spiral/spiral.html.md.html; result = 10082 } 00:00:09 i #4923 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/spiral/spiral.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.hangul.md } 00:00:09 d #4924 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\spiral.html.hangul.md; new_path = c:/home/git/vault/dist/data/spiral/spiral.html.hangul.md; result = 159 } 00:00:09 d #4925 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/twitter/twitter.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/twitter/twitter.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 v #4926 > 25e72ff235ebd8e4660d7ff3fc112cecd828b9ac 00:00:09 v #4927 > 'e3ef54d891d63ebc833646a1fd1659d77b054964' 00:00:09 v #4928 > c325341c0da447957840c68bfae7175d63d047d8 00:00:09 v #4929 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 v #4930 > 'f3b56b85c461b6c7b4621c4867b4a3d000577ca1' 00:00:09 i #4931 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.hangul.md.epub } 00:00:09 d #4932 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.hangul.md.epub; new_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.hangul.md.epub; result = 5514 } 00:00:09 i #4933 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.hangul.md.pdf } 00:00:09 d #4934 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.hangul.md.pdf; result = 4530 } 00:00:09 i #4935 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.hangul.md.html } 00:00:09 d #4936 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.hangul.md.html; new_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.hangul.md.html; result = 10086 } 00:00:09 i #4937 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.md.epub } 00:00:09 v #4938 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #4939 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.md.epub; new_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.md.epub; result = 5449 } 00:00:09 i #4940 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.md.pdf } 00:00:09 d #4941 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.md.pdf; new_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.md.pdf; result = 6271 } 00:00:09 d #4942 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/north korea.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/north korea.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 i #4943 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.md.html } 00:00:09 d #4944 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.md.html; new_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.md.html; result = 10057 } 00:00:09 i #4945 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.hangul.md } 00:00:09 v #4946 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 d #4947 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.fc1943s.hangul.md; new_path = c:/home/git/vault/dist/data/twitter/twitter.fc1943s.hangul.md; result = 106 } 00:00:09 i #4948 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.hangul.md.epub } 00:00:09 d #4949 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/travel.html.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/travel.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 d #4950 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.hangul.md.epub; result = 373683 } 00:00:09 i #4951 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.hangul.md.pdf } 00:00:09 v #4952 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #4953 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.hangul.md.pdf; result = 558482 } 00:00:09 i #4954 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.hangul.md.html } 00:00:09 d #4955 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/maps.png.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/maps.png.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 d #4956 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.hangul.md.html; result = 2036466 } 00:00:09 i #4957 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.md.epub } 00:00:09 d #4958 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.md.epub; result = 331353 } 00:00:09 i #4959 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.md.pdf } 00:00:09 d #4960 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.md.pdf; result = 1423058 } 00:00:09 i #4961 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.md.html } 00:00:09 d #4962 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.md.html; result = 1385960 } 00:00:09 i #4963 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.hangul.md } 00:00:09 v #4964 > 4bf711ead74e2dd67aa74d62261c165a741a2013 00:00:09 d #4965 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.hangul.md; new_path = c:/home/git/vault/dist/data/travel/travel.hangul.md; result = 1753438 } 00:00:09 d #4966 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/travel/travel.mp3.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/travel/travel.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 v #4967 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 v #4968 > '8d36121d0438fe72874a830235019a6439569844' 00:00:09 i #4969 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.hangul.md.epub } 00:00:09 d #4970 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/tech/tech.mp3.hangul.md.epub; result = 7132 } 00:00:09 i #4971 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.hangul.md.pdf } 00:00:09 d #4972 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/tech/tech.mp3.hangul.md.pdf; result = 5418 } 00:00:09 i #4973 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.hangul.md.html } 00:00:09 d #4974 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/tech/tech.mp3.hangul.md.html; result = 16279 } 00:00:09 i #4975 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.md.epub } 00:00:09 d #4976 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.md.epub; new_path = c:/home/git/vault/dist/data/tech/tech.mp3.md.epub; result = 6643 } 00:00:09 i #4977 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.md.pdf } 00:00:09 d #4978 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/tech/tech.mp3.md.pdf; result = 12255 } 00:00:09 i #4979 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.md.html } 00:00:09 d #4980 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.md.html; new_path = c:/home/git/vault/dist/data/tech/tech.mp3.md.html; result = 13685 } 00:00:09 i #4981 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/tech/tech.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.hangul.md } 00:00:09 d #4982 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\tech.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/tech/tech.mp3.hangul.md; result = 5704 } 00:00:09 v #4983 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #4984 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/twitter/twitter.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/twitter/twitter.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 d #4985 runtime.execute_with_options / { file_name = crowbook; arguments = ["--verbose", "--to", "pdf", "--single", "c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md", "--output", "c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md.pdf", "--set", "tex.paper.size", "a4paper", "tex.template.add", "\\pagenumbering{gobble}", "tex.template.add", "\\usepackage{polyglossia}", "tex.template.add", "\\setmainlanguage{korean}", "tex.template.add", "\\setmainfont{NanumGothicCoding}", "tex.font.size", "13", "rendering.num_depth", "6", "rendering.highlight.theme", "Solarized (dark)"]; options = { command = crowbook --verbose --to pdf --single "c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md" --output "c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md.pdf" --set tex.paper.size a4paper tex.template.add "\pagenumbering{gobble}" tex.template.add "\usepackage{polyglossia}" tex.template.add "\setmainlanguage{korean}" tex.template.add "\setmainfont{NanumGothicCoding}" tex.font.size 13 rendering.num_depth 6 rendering.highlight.theme \"Solarized (dark)\"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 v #4986 > e3ef54d891d63ebc833646a1fd1659d77b054964 00:00:09 v #4987 ! CROWBOOK 0.17.0 00:00:09 v #4988 > '6276e35c0a0b5b4a95f352dfca27a1785e05caa6' 00:00:09 v #4989 ! 10:54:14 [DEBUG] (1) crowbook::book: Ignoring YAML block: 00:00:09 v #4990 ! 00:00:09 v #4991 ! 10:54:14 [DEBUG] (1) crowbook::book: Attempting to generate pdf... 00:00:09 v #4992 ! 10:54:14 [DEBUG] (1) crowbook::latex: Attempting to run LaTeX on generated file 00:00:09 v #4993 > f3b56b85c461b6c7b4621c4867b4a3d000577ca1 00:00:09 v #4994 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #4995 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/north korea.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.hangul.md.epub } 00:00:09 d #4996 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/north korea.png.hangul.md.epub; result = 6121 } 00:00:09 v #4997 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 i #4998 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/north korea.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.hangul.md.pdf } 00:00:09 d #4999 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/north korea.png.hangul.md.pdf; result = 3913 } 00:00:09 i #5000 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/north korea.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.hangul.md.html } 00:00:09 d #5001 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/travel.html.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/travel.html.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 d #5002 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/north korea.png.hangul.md.html; result = 13391 } 00:00:09 i #5003 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/north korea.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.md.epub } 00:00:09 d #5004 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.md.epub; new_path = c:/home/git/vault/dist/data/travel/north korea.png.md.epub; result = 5893 } 00:00:09 i #5005 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/north korea.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.md.pdf } 00:00:09 d #5006 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.md.pdf; new_path = c:/home/git/vault/dist/data/travel/north korea.png.md.pdf; result = 4740 } 00:00:09 i #5007 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/north korea.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.md.html } 00:00:09 d #5008 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.md.html; new_path = c:/home/git/vault/dist/data/travel/north korea.png.md.html; result = 12168 } 00:00:09 v #5009 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #5010 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/north korea.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.hangul.md } 00:00:09 d #5011 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\north korea.png.hangul.md; new_path = c:/home/git/vault/dist/data/travel/north korea.png.hangul.md; result = 2978 } 00:00:09 i #5012 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.png.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.hangul.md.epub } 00:00:09 d #5013 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/maps.png.hangul.md.epub; result = 9406 } 00:00:09 i #5014 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.png.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.hangul.md.pdf } 00:00:09 d #5015 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/maps.png.hangul.md.pdf; result = 2204 } 00:00:09 i #5016 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.png.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.hangul.md.html } 00:00:09 d #5017 runtime.execute_with_options / { file_name = git; arguments = ["ls-tree", "--format='%(objectname)'", "origin/gh-pages", "c:/home/git/vault/data/twitter/twitter.i574n.md"]; options = { command = git ls-tree --format='%(objectname)' origin/gh-pages "c:/home/git/vault/data/twitter/twitter.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault", ) } } 00:00:09 d #5018 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/maps.png.hangul.md.html; result = 77796 } 00:00:09 i #5019 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.png.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.md.epub } 00:00:09 v #5020 > 'ee4e487f06a56378569d0291de3224bd0b350da5' 00:00:09 d #5021 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.md.epub; new_path = c:/home/git/vault/dist/data/travel/maps.png.md.epub; result = 8596 } 00:00:09 i #5022 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.png.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.md.pdf } 00:00:09 d #5023 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.md.pdf; new_path = c:/home/git/vault/dist/data/travel/maps.png.md.pdf; result = 2202 } 00:00:09 i #5024 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.png.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.md.html } 00:00:09 d #5025 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.md.html; new_path = c:/home/git/vault/dist/data/travel/maps.png.md.html; result = 56185 } 00:00:09 i #5026 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/maps.png.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.hangul.md } 00:00:09 d #5027 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\maps.png.hangul.md; new_path = c:/home/git/vault/dist/data/travel/maps.png.hangul.md; result = 59559 } 00:00:09 v #5028 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #5029 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/travel/travel.mp3.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/travel/travel.mp3.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 v #5030 > 8d36121d0438fe72874a830235019a6439569844 00:00:09 v #5031 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #5032 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.hangul.md.epub } 00:00:09 d #5033 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/twitter/twitter.html.hangul.md.epub; result = 5507 } 00:00:09 i #5034 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.hangul.md.pdf } 00:00:09 d #5035 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/twitter/twitter.html.hangul.md.pdf; result = 3730 } 00:00:09 i #5036 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.hangul.md.html } 00:00:09 d #5037 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/twitter/twitter.html.hangul.md.html; result = 10086 } 00:00:09 i #5038 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.md.epub } 00:00:09 d #5039 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.md.epub; new_path = c:/home/git/vault/dist/data/twitter/twitter.html.md.epub; result = 5441 } 00:00:09 i #5040 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.md.pdf } 00:00:09 d #5041 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.md.pdf; new_path = c:/home/git/vault/dist/data/twitter/twitter.html.md.pdf; result = 5949 } 00:00:09 i #5042 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.md.html } 00:00:09 d #5043 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.md.html; new_path = c:/home/git/vault/dist/data/twitter/twitter.html.md.html; result = 10056 } 00:00:09 i #5044 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.hangul.md } 00:00:09 d #5045 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.html.hangul.md; new_path = c:/home/git/vault/dist/data/twitter/twitter.html.hangul.md; result = 119 } 00:00:09 v #5046 > 6276e35c0a0b5b4a95f352dfca27a1785e05caa6 00:00:09 v #5047 > 'b8e95fd70a82e930b1d8f6fad237e7cb3e35bd35' 00:00:09 v #5048 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #5049 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.html.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.hangul.md.epub } 00:00:09 v #5050 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 42 } 00:00:09 d #5051 runtime.execute_with_options / { file_name = git; arguments = ["hash-object", "c:/home/git/vault/dist/data/twitter/twitter.i574n.md"]; options = { command = git hash-object "c:/home/git/vault/dist/data/twitter/twitter.i574n.md"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = Some( "\\?\C:\home\git\vault\dist", ) } } 00:00:09 d #5052 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.html.hangul.md.epub; result = 5876 } 00:00:09 i #5053 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.html.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.hangul.md.pdf } 00:00:09 v #5054 > ee4e487f06a56378569d0291de3224bd0b350da5 00:00:09 d #5055 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.html.hangul.md.pdf; result = 4975 } 00:00:09 i #5056 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.html.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.hangul.md.html } 00:00:09 d #5057 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.html.hangul.md.html; result = 11687 } 00:00:09 i #5058 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.html.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.md.epub } 00:00:09 d #5059 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.html.md.epub; result = 5690 } 00:00:09 i #5060 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.html.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.md.pdf } 00:00:09 d #5061 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.html.md.pdf; result = 8238 } 00:00:09 i #5062 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.html.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.md.html } 00:00:09 d #5063 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.html.md.html; result = 11300 } 00:00:09 i #5064 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.html.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.hangul.md } 00:00:09 d #5065 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.html.hangul.md; new_path = c:/home/git/vault/dist/data/travel/travel.html.hangul.md; result = 1231 } 00:00:09 v #5066 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #5067 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.mp3.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.hangul.md.epub } 00:00:09 d #5068 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.hangul.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.mp3.hangul.md.epub; result = 5624 } 00:00:09 i #5069 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.mp3.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.hangul.md.pdf } 00:00:09 d #5070 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.mp3.hangul.md.pdf; result = 4028 } 00:00:09 i #5071 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.mp3.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.hangul.md.html } 00:00:09 d #5072 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.hangul.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.mp3.hangul.md.html; result = 10220 } 00:00:09 i #5073 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.mp3.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.md.epub } 00:00:09 d #5074 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.md.epub; new_path = c:/home/git/vault/dist/data/travel/travel.mp3.md.epub; result = 5507 } 00:00:09 i #5075 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.mp3.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.md.pdf } 00:00:09 d #5076 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.md.pdf; new_path = c:/home/git/vault/dist/data/travel/travel.mp3.md.pdf; result = 7332 } 00:00:09 i #5077 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.mp3.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.md.html } 00:00:09 d #5078 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.md.html; new_path = c:/home/git/vault/dist/data/travel/travel.mp3.md.html; result = 10075 } 00:00:09 i #5079 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/travel/travel.mp3.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.hangul.md } 00:00:09 d #5080 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\travel.mp3.hangul.md; new_path = c:/home/git/vault/dist/data/travel/travel.mp3.hangul.md; result = 296 } 00:00:09 v #5081 > b8e95fd70a82e930b1d8f6fad237e7cb3e35bd35 00:00:09 v #5082 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 40 } 00:00:09 i #5083 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.hangul.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.hangul.md.epub } 00:00:09 d #5084 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.hangul.md.epub; new_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.hangul.md.epub; result = 5512 } 00:00:09 i #5085 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.hangul.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.hangul.md.pdf } 00:00:09 d #5086 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.hangul.md.pdf; new_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.hangul.md.pdf; result = 4375 } 00:00:09 i #5087 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.hangul.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.hangul.md.html } 00:00:09 d #5088 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.hangul.md.html; new_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.hangul.md.html; result = 10082 } 00:00:09 i #5089 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.md.epub; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.md.epub } 00:00:09 d #5090 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.md.epub; new_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.md.epub; result = 5448 } 00:00:09 i #5091 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.md.pdf; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.md.pdf } 00:00:09 d #5092 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.md.pdf; new_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.md.pdf; result = 6051 } 00:00:09 i #5093 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.md.html; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.md.html } 00:00:09 d #5094 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.md.html; new_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.md.html; result = 10055 } 00:00:09 i #5095 documents.run / par_map / files' = [] / listm.iter / { output_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.hangul.md; output_cache_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.hangul.md } 00:00:09 d #5096 file_system.file_copy / { old_path = \\?\C:\home\git\vault\target\gh-pages\twitter.i574n.hangul.md; new_path = c:/home/git/vault/dist/data/twitter/twitter.i574n.hangul.md; result = 102 } 00:00:13 v #5097 ! 10:54:17 [DEBUG] (1) crowbook::zipper: xelatex didn't return succesfully: xelatex: security risk: running with elevated privileges 00:00:13 v #5098 ! xelatex: major issue: So far, you have not checked for MiKTeX updates. 00:00:13 v #5099 ! 00:00:13 v #5100 ! ERROR Error during temporary files editing: xelatex didn't return succesfully 00:00:13 v #5101 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 644 } 00:00:13 w #5102 documents.crowbook / result contains ERROR / { exit_code = 0; output_path = c:/home/git/vault/dist/data/travel/travel.i574n.md.pdf; result = CROWBOOK 0.17.0 10:54:13 [DEBUG] (1) crowbook::book: Ignoring YAML block: 10:54:13 [DEBUG] (1) crowbook::book: Attempting to generate pdf... 10:54:13 [DEBUG] (1) crowbook::latex: Attempting to run LaTeX on generated file 10:54:17 [DEBUG] (1) crowbook::zipper: xelatex didn't return succesfully: xelatex: security risk: running with elevated privileges xelatex: major issue: So far, you have not checked for MiKTeX updates. ERROR Error during temporary files editing: xelatex didn't return succesfully } 00:00:13 v #5103 ! 10:54:17 [DEBUG] (1) crowbook::zipper: xelatex didn't return succesfully: xelatex: security risk: running with elevated privileges 00:00:13 v #5104 ! xelatex: major issue: So far, you have not checked for MiKTeX updates. 00:00:13 v #5105 ! 00:00:13 v #5106 ! ERROR Error during temporary files editing: xelatex didn't return succesfully 00:00:13 v #5107 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 644 } 00:00:13 w #5108 documents.crowbook / result contains ERROR / { exit_code = 0; output_path = c:/home/git/vault/dist/data/travel/travel.i574n.hangul.md.pdf; result = CROWBOOK 0.17.0 10:54:14 [DEBUG] (1) crowbook::book: Ignoring YAML block: 10:54:14 [DEBUG] (1) crowbook::book: Attempting to generate pdf... 10:54:14 [DEBUG] (1) crowbook::latex: Attempting to run LaTeX on generated file 10:54:17 [DEBUG] (1) crowbook::zipper: xelatex didn't return succesfully: xelatex: security risk: running with elevated privileges xelatex: major issue: So far, you have not checked for MiKTeX updates. ERROR Error during temporary files editing: xelatex didn't return succesfully } 00:00:17 v #5109 ! 10:54:21 [INFO] crowbook::book: Succesfully generated PDF: data\spirituality\the-book-of-innocence_pt-br.hangul.md.pdf 00:00:17 v #5110 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 542 } 00:00:17 w #5111 documents.crowbook / result contains ERROR / { exit_code = 0; output_path = c:/home/git/vault/dist/data/spirituality/the-book-of-innocence_pt-br.hangul.md.pdf; result = CROWBOOK 0.17.0 10:54:07 [ERROR] crowbook::book: Inline YAML block could not set String("치틀리") to String("우 리브루 다 이노센시아"): Error converting BookOption: unrecognized key '치틀리' 10:54:07 [DEBUG] (1) crowbook::book: Attempting to generate pdf... 10:54:07 [DEBUG] (1) crowbook::latex: Attempting to run LaTeX on generated file 10:54:21 [INFO] crowbook::book: Succesfully generated PDF: data\spirituality\the-book-of-innocence_pt-br.hangul.md.pdf } 00:00:17 i #5112 documents.main / { result_len = 252 }